3.c

来自「实现进程间的创建、管理、软中断通信和管道通信」· C语言 代码 · 共 49 行

C
49
字号
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<sys/types.h>
int pid1;
int pid2;
void func(){
         kill(pid1,10);
         kill(pid2,12);
         wait(NULL);
         wait(NULL);
         printf("Parent process is killed !\n");
}
void func1(){
           printf("Child process one is killed by Parent!\n");
           exit(0);
}
void func2(){
           printf("Child process two is killed by Parent!\n");
           exit(0);
}
main(){
         pid1=fork();
         if(pid1==0){
           sigset_t i;
           sigemptyset(&i);
           sigaddset(&i,SIGINT);
           sigprocmask(SIG_BLOCK,&i,NULL);           
           signal(10,func1);
           while(1){;}
         }
         else if(pid1>0){
             pid2=fork();
             if(pid2==0){
                 sigset_t j;
                 sigemptyset(&j);
                 sigaddset(&j,SIGINT);
                 sigprocmask(SIG_BLOCK,&j,NULL);
                 signal(12,func2);
                 while(1){;}
             }
             else{
                    signal(SIGINT,func);
                    while(1){;}                               
             }                 
         }
        return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?