信号机制
来源:互联网 发布:python编程(第四版) 编辑:程序博客网 时间:2024/05/21 08:38
一.信号的发送过程
发送阶段:内核发送或者用户调用信号发送函数发送信号时,都是由内核将信号写入到目标进程或线程的信号队列中,即pengding队列;
疑问:处理方式为SIG_IGN忽略会发送吗? 应该不会吧
递送阶段:内核将信号从pending队列中取出,并处理(包括调用用户自定义处理、SIG_DFL默认处理、SIG_IGN忽略处理),
递送的时机是在进程从内核态转到用户态时进行的。处于发送阶段和递送之间状态的信号称作是未决的,进程在信号递送之前,仍可改变对此信号的处理动作。
参考:apue 10.8 http://blog.csdn.net/morphad/article/details/9247471
二.不可靠信号和可靠信号
unix早期的信号,信号处理函数安装后只能用一次,调用下次后需要重新安装,信号不支持排队,在信号被处理之前如果信号发送了多次,只处理一次,不支持信号的屏蔽。
随着时间的发展,对信号的处理机制进行了改进和扩展,对于新增加的信号采用新的机制,因为已有很多建立在老的信号机制上的代码,为了前向兼容,以前定义的信号(值小于SIGRTMIN)仍然采用老的机制,因此小于SIGRTMIN的信号都是不可靠信号,SIGRTMIN与SIGRTMAX之间的信号都是可靠信号。
对不可靠信号的处理机制也有了变化,如调用一次信号处理函数后不需要重现安装,支持屏蔽。不可靠信号对应非实时信号,不支持排队,可靠信号对应实时信号支持排队。
参考:http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html
三.apue中介绍了信号相关的api,以及sigsuspend的应用,system,sleep的代码
四.多线程情况下信号的处理
内核为每个线程维护未决信号队列,各线程共享信号处理函数,线程可以有自己的屏蔽信号集,信号按规则发往某一个线程。
参考:http://www.cnblogs.com/clover-toeic/p/4126594.html
http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/
- 信号机制
- 信号机制
- 信号机制
- 信号机制
- 信号机制
- 信号机制
- 信号机制
- 信号机制
- 信号机制和中断机制
- GTK中的信号机制
- UNIX信号机制浅析
- 信号和槽机制
- linux信号机制
- linux信号机制signal
- Linux信号机制分析
- Linux的信号机制
- 信号槽机制
- 10. 信号机制
- .bash_profile和.bashrc的区别(如何设置生效)
- 开启我的CSDN之旅,开博杂谈。
- 归并排序
- C++——宏观了解
- could not translate tablespace name "TEST_TBS"
- 信号机制
- Hive优化
- 利用AC自动机进行关键字的提取和过滤
- 报表打印错误:Forcing NLS_NUMERIC_CHARACTERS to: '.,' for XDO processing
- 归并排序的理解记录
- [BestCoder] Round #7
- 聊聊C语言中的位段(位域)
- Java应用监控工具-JavaMelody
- vmware redhat linux安装遇到的问题