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

目录
相关文章
|
22天前
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
28 0
|
5天前
|
运维 Linux
Linux查找占用的端口,并杀死进程的简单方法
通过上述步骤和命令,您能够迅速识别并根据实际情况管理Linux系统中占用特定端口的进程。为了获得更全面的服务器管理技巧和解决方案,提供了丰富的资源和专业服务,是您提升运维技能的理想选择。
8 1
|
16天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
【10月更文挑战第9天】本文将深入浅出地介绍Linux系统中的进程管理机制,包括进程的概念、状态、调度以及如何在Linux环境下进行进程控制。我们将通过直观的语言和生动的比喻,让读者轻松掌握这一核心概念。文章不仅适合初学者构建基础,也能帮助有经验的用户加深对进程管理的理解。
15 1
|
21天前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
29 0
Linux C/C++之TCP / UDP通信
|
21天前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
20 0
Linux c/c++之IPC进程间通信
|
22天前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
17 0
Linux c/c++进程间通信(1)
|
22天前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
23 0
Linux c/c++之进程的创建
|
29天前
|
网络协议 Linux
linux学习之套接字通信
Linux中的套接字通信是网络编程的核心,允许多个进程通过网络交换数据。套接字提供跨网络通信能力,涵盖本地进程间通信及远程通信。主要基于TCP和UDP两种模型:TCP面向连接且可靠,适用于文件传输等高可靠性需求;UDP无连接且速度快,适合实时音视频通信等低延迟场景。通过创建、绑定、监听及读写操作,可以在Linux环境下轻松实现这两种通信模型。
28 1
|
2月前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
19天前
|
存储 Python
Python中的多进程通信实践指南
Python中的多进程通信实践指南
14 0