linux下的SIGINT的作用,signal(SIGINT,stop)的问题,大家进来看下!!!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

有以下代码:

int main(void)

{

int  p1, p2;

signal(SIGINT,stop);

while((p1=fork())= =-1);

if(p1>0)                           /* In Parent Process*/

{       /*(1) */

while((p2=fork())= =-1);

if(p2>0)                   /*in parent process*/

{    /* (2) */

wait_mark=1;

waiting(0);

kill(p1,10);

kill(p2,12);

wait( );

wait( );

printf(“parent process is killed!\n”);

exit(0);

} else{                   /*In Child Process 2*/

wait_mark=1;

signal(12,stop);

waiting();

lockf(1,1,0);              //加锁

printf(“child process 2 is killed by parent!\n”);

lockf(1,0,0);              //解锁 exit(0);

}

}else{                             /*In Child Process 1*/

wait_mark=1;

signal(10,stop);

waiting();

lockf(1,1,0);

printf(“child process 1 is killed by parent!\n”);

lockf(1,0,0);

exit(0);

}

return 0;

}

void waiting()

{

while(wait_mark!=0);

}

void stop()

{

wait_mark=0;

}

如果把signal(SIGINT,stop)放在(1)号和(2)号位置,结果会怎样?为什么?