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

本文详细介绍了Linux中信号的分类,包括标准信号和实时信号的管理方式。重点讨论了信号处理机制,尤其是不可靠信号和可靠信号的内核管理。此外,文章详述了`sigaction`函数作为信号底层API的功能,如何注册信号处理函数以及其与`signal`函数的区别。最后提到了高级信号函数`sigqueue`,并强调了信号处理中的并发问题和特殊信号SIGKILL与SIGSTOP的特点。
最低0.47元/天 解锁文章
291

被折叠的 条评论
为什么被折叠?



