|

楼主 |
发表于 2005-4-28 18:28:59
|
显示全部楼层
问一个linux下关于kill()与singal的使用问题:
--------------------------------------------------------------------------------
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void waiting( ),stop( );
int wait_mark;
main( )
{
int p2;
while((p2=fork( ))= =-1); /*创建子进程*/
if(p2>0)
{
wait_mark=1;
signal(SIGINT,stop); /*接收到^c信号,转stop*/
waiting( );
kill(p2,17); /*向p2发软中断信号17*/
wait(0); /*同步*/
printf(" arent process is killed!\n");
exit(0);
}
else
{
wait_mark=1;
signal(17,stop); /*接收到软中断信号17,转stop*/
waiting( );
printf("Child process 2 is killed by parent!\n");
exit(0);
}
}
void waiting( )
{
while(wait_mark!=0);
}
void stop( )
{
wait_mark=0;
}
为什么运行后只有父进程输出Parent process is killed!
预期的应该是子进程先输出,然后才是父进程啊~~~
不懂啊,应该怎么改进啊 |
|