信号本质

信号本质

信号是在软件层次上对中断机制的一种模拟,软中断

信号来源

信号事件的发生有两个来源:

硬件来源:(比如我们按下了键盘或者其它硬件故障)

软件来源:最常用发送信号的系统函数是killraisealarmsetitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。

区分是什么原因唤醒进程,用signal_pending( current )

检查当前进程是否有信号处理,返回不为0表示有信号需要处理。-ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。也就是说,如果信号函数前有发生系统调用,在调度用户信号函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用。如果返回值-ERESTARTSYS,并且当前调度的信号具备-ERESTARTSYS属性,系统就会在用户信号函数返回之后再执行该系统调用。

原文

http://blog.sina.com.cn/s/blog_548b0a230100dy9o.html

posted @ 2013-02-24 22:16  浪里飞  阅读(536)  评论(0编辑  收藏  举报