#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int wait_mark;
void waiting( ),stop( );
main ( ){
int p1,p2;
while ((p1=fork())-1);
if (p1>0) { /主进程的处理/
while ((p2=fork())-1);
if (p2>0) { /主进程的处理/
wait_mark=1;
signal(SIGINT,stop);/预设对SIGINT信号的处理过程/
waiting();/等待接收ctrl+c信号/
kill(p1,16);/向p1发出信号16/
kill(p2,17);/向p2发出信号17/
wait(0);/同步/
wait(0);
print(“parents is killed\n”); /可以增长这个输出,观察它的内容不会被打断/
exit(0);
}
else { /p2进程的处理/
wait_mark=1;
signal(17,stop); /预设对17信号的处理过程/
signal(2,1);/忽略ctrl+c/
waiting();/等待信号17/
lockf(stdout,1,0);/用上锁的方法实现互斥/
printf(“P2 is killed by parent\n”);
lockf(stdout,0,0);
exit(0);/P2正常结束/
}
}
else { /p1进程的处理/
wait_mark=1;
signal(16,stop);
signal(2,1);
waiting();/等待信号16/
lockf(stdout,1,0); /用上锁的方法实现互斥/
printf(“P1 is killed by parent\n”);
lockf(stdout,0,0);
exit(0); /P1正常结束/
}
}
void waiting()
{
while(wait_mark!=0);
}
void stop()
{
wait_mark=0;
}
1111111111111111111
版权声明:本文为qq_45852929原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
上一篇文章
html编写在线打字通,金山打字在线练习版 怎么修改金山打字通打字速度? 下一篇文章
对象死后自救
html编写在线打字通,金山打字在线练习版 怎么修改金山打字通打字速度? 下一篇文章
对象死后自救