行业知识
【Linux】信号
樊梓慕:个人主页
个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》《算法》
每一个不曾起舞的日子,都是对生命的辜负
目录
前言
1.认识信号
2.信号的产生
2.1kill命令
2.2键盘输入
2.2.1核心转储
2.3系统调用
2.3.1kill函数
2.3.2raise函数
2.3.3abort函数
2.4软件条件
2.4.1SIGPIPE信号
2.4.2SIGALRM信号
2.5异常
2.5.1除零异常
2.5.2野指针异常
3.信号的保存
3.1信号常见概念
3.2在内核中的表示
3.3sigset_t
3.4操作block的系统调用sigprocmask
3.5获取pending的系统调用sigpending
4.信号的处理
4.1信号是什么时候被处理的?
4.1.1内核态与用户态
4.2信号是如何被处理的?
4.3sigaction
5.可重入函数
6.volatile
7.SIGCHLD信号
前言
信号在我们的生活中无处不在,比如红绿灯给你递达了一个红灯停绿灯行的信号,收到快递取件码给你抵达了一个快递到了的信号等等,那么在计算机中也有信号的概念,对只不过接收信号的个体从人变成了进程,本篇文章我们会以信号的产生、信号的保存以及信号的处理来介绍信号的概念。
欢迎大家收藏以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。
=========================================================================
GITEE相关代码:樊飞 (fanfei_c) - Gitee.com
=========================================================================
1.认识信号
信号是Linux系统提供的让用户(进程)给其他进程发送异步信息的一种方式。
异步:一个任务的执行不会阻塞其他任务的执行,即一个任务无需等待另一个任务完成即可开始。
那么根据我们在现实生活中对于信号的概念,我们可以总结出一份关于信号的认识:
- 我们能识别一个信号并做出处理;
- 当信号到来时,如果我们在处理更重要的事而暂时不能处理该信号,我们需要将这个信号临时保存,等到合适的时候再进行处理;
- 信号的产生是随时的,我们无法准确处理,所以信号是异步发送的。
接下来我们首先来观察一下常见的信号吧:
编写以下程序并运行:
#include #include #include using namespace std;int main(){ while (true) { cout
下一篇:解决鼠标丢帧,操作流畅无卡顿!