实现过程:
1.使用系统调用fork创建两个子进程
2.用系统调用signal()让父进程捕捉键盘上的中断信号(Ctrl+C或者Ctrl + )
3.捕捉到中断信号后,父进程调用系统调用Kill杀死两个子进程
#include<unistd.h> #include<string.h> #include<stdlib.h> #include<stdio.h> #include<signal.h> #include<sys/types.h> #include<sys/wait.h> pid_t pid1,pid2; void CallKill(int a) { kill(pid1,20); kill(pid2,21); } void Child_1() { printf("Child Process1 is Killed by Parent!\r\n"); exit(0); } void Child_2() { printf("Child Process2 is Killed by Parent!\r\n"); exit(0); } int main() { pid1 = fork(); if(pid1 == 0) { //signal(SIGINT,SIG_IGN);//忽略收到的中断指令 signal(SIGQUIT,SIG_IGN); signal(20,Child_1);//注册中断信号对应的函数指针 sleep(5);//切换进程 } else { pid2 = fork(); if(pid2 == 0) { //signal(SIGINT,SIG_IGN); signal(SIGQUIT,SIG_IGN); signal(21,Child_2);//注册中断信号对应的函数指针 sleep(5); } else { //signal(SIGINT,CallKill); signal(SIGQUIT,CallKill); sleep(10);//切换到子进程去执行 wait(0);//等待子进程全部推出 wait(0); printf("Parent Process is Killed\r\n"); exit(0); } } return 0; }
初接触linux的实验记录