Linux进程间软中断通信

简介: 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;
}

image.png


image.png

初接触linux的实验记录

目录
相关文章
|
1天前
|
Linux 数据库
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
|
1天前
|
Unix Linux 调度
linux线程与进程的区别及线程的优势
linux线程与进程的区别及线程的优势
|
1天前
|
Linux 调度 C语言
|
2天前
|
消息中间件 算法 Linux
【Linux】对system V本地通信的内核级理解
【Linux】对system V本地通信的内核级理解
|
2天前
|
存储 安全 Linux
【Linux】详解进程通信中信号量的本质&&同步和互斥的概念&&临界资源和临界区的概念
【Linux】详解进程通信中信号量的本质&&同步和互斥的概念&&临界资源和临界区的概念
|
2天前
|
消息中间件 算法 Linux
【Linux】详解如何利用共享内存实现进程间通信
【Linux】详解如何利用共享内存实现进程间通信
|
2天前
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
|
3天前
|
存储 Linux Shell
Linux:进程等待 & 进程替换
Linux:进程等待 & 进程替换
29 9