signal2.c
来自「操作系统的一些实验」· C语言 代码 · 共 61 行
C
61 行
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
int pid1,pid2;
int EndFlag =0;
int pf1 =0;
int pf2 =0;
void IntDelete()
{
kill(pid1,16);
kill(pid2,17);
EndFlag=1;
}
void Int1()
{
printf("child process 1 is killed by parent\n");
exit(0);
}
void Int2()
{
printf("child process 2 is killed by parent\n");
exit(0);
}
int main()
{
int exitpid;
signal(SIGINT,SIG_IGN);
signal(SIGQUIT,SIG_IGN);
while((pid1=fork())==-1);
if(pid1==0)
{
signal(SIGUSR1,Int1);
signal(SIGINT,SIG_IGN);
pause();
exit(0);
}
else
{
while((pid2=fork())==-1);
if(pid2==0)
{
signal(SIGUSR1,Int2);
signal(SIGINT,SIG_IGN);
pause();
exit(0);
}
else
{
signal(SIGINT,IntDelete);
waitpid(-1,&exitpid,0);
printf("parent process is killed\n");
exit(0);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?