文章目录
信号的基本概念
- 信号递达:实际处理信号的动作
- 信号未决:信号从产生到递达之间的状态
- 信号阻塞:不会被递达的信号
- 信号忽略:递达的动作是忽略
阻塞和忽略的区别
阻塞指的是这个信号不会被递达,也就是不对其进行操作处理
忽略指的是这个信号可以递达,只是处理的动作是忽略
信号保存
在进程的PCB中有如下三个数据结构和信号相关
前两个是位图,后一个是数组
block位图
这个位图表示哪些信号被阻塞,0或1表示是否被阻塞,某一个位置表示对应的信号
pending位图
这个位图用来存储收到的信号,0或1表示是否收到,某一个位置表示对应的信号,这个位图也称之为信号集,也就是未决的情况
handler数组
这个数组是一个函数指针数组,里面的内容是函数指针,下标表示收到n号信号,调用的处理方法就是对应的函数指针
SIG_DFL宏代表这个函数是默认处理函数
SIG_IGN宏代表收到这个信号后,进行忽略这个信号
信号处理
这个函数可以手动更改handler数组,让进程在捕捉到对应信号的时候调用我们指定的函数处理
#include<iostream>
#