打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux进程间软中断通信

实现过程:

  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的实验记录

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux信号处理机制
关于进程的代码练习 fork daemon
Linux下的c语言网络编程-将普通进程转换为守护进程 - 开源教程 - linux学习 ...
《UNIX环境高级编程》的笔记——wait&waitpid
linux c信号相关函数学习记录
linux中的信号机制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服