信号底层API:sigaction
linux中信号的分类
标准信号及其不可靠性
- 标准信号
- 1-31号信号,也叫不可靠信号,继承UNIX信号,采用位图管理
- 如果同时来相同的信号来不及处理,内核会丢弃掉
- 实时信号
- 32~64号信号,是可靠的,采用队列管理
- 来一次,处理一次,转发一次
信号处理机制
内核对信号的处理
- A进程向B进程发送一个信号,内核会首先收到信号,然后发给B进程,在发送给B进程之前,内核负责管理这些信号
- 对于不可靠信号,内核采用位图标记,给该信号分配sigqueue结构体,挂入链表之中,并将位图中的对应位置一;此时若有相同的信号发来,因为对应位已经置一,因此内核会丢弃该信号
- 对于可靠信号,内核采用队列管理:给该信号分配一个sigqueue结构体,并挂入到链表队列之中
- 队列中信号的个数也是有限制的,超过默认值,可靠信号也会丢失,也就变得不可靠了。