Linux进程间软中断通信
日期: 2020-05-14 分类: 个人收藏 372次阅读
实现过程:
- 使用系统调用fork创建两个子进程
- 用系统调用signal()让父进程捕捉键盘上的中断信号(Ctrl+C或者Ctrl + )
- 捕捉到中断信号后,父进程调用系统调用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的实验记录
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:Linux
精华推荐