|
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void waiting(),stop();
int wait_mark;
void main()
{
int p1,p2;
while((p1=fork())==-1);
if(p1>0) {
while((p2=fork())==-1);
if(p2>0) {
wait_mark=1;
signal(SIGINT,stop);
waiting(0);
kill(p1,16);
kill(p2,17);
wait(0);
wait(0);
printf("parent process is killed!\n");
exit(0);
}
else {
wait_mark=1;
signal(17,stop);
waiting();
lockf(1,1,0);
printf("child process 2 is killed by parent!\n");
lockf(1,0,0);
exit(0);
}
}
else {
wait_mark=1;
signal(16,stop);
waiting();
lockf(1,1,0);
printf("child process 1 is killed by parent!\n");
lockf(1,0,0);
exit(0);
}
}
void waiting()
{
while(wait_mark!=0);
}
void stop()
{
wait_mark=0;
}
运行只输出"parent process is killed!",程序的问题在哪?哪位高手帮我修改一下这段程序,要求输出:
child process 1 is killed by parent!
child process 2 is killed by parent!
parent process is killed!
另外请教exit(0)的意义是什么? |
|