信号之可靠信号术语和语义

当引发信号的事件发生时,为进程产生一个信号(或向进程发送一个信号)。事件可以是硬件异常、软件条件、终端产生的信号或调用kill函数。

在产生了信号时,内核通常在进程表中设置一个某种形式的标志。当对信号采取了这种动作时,我们说向进程递送了一个信号

在信号产生(generation)和递送(delivery)之间的时间间隔,称信号是未决的(pending)。

进程可以选用信号递送阻塞。如果为进程产生了一个选择为阻塞的信号,而且对该信号的动作是系统默认动作或捕捉该信号,则为该进程将此信号保持为未决状态,直到该进程(a)对此信号解除了阻塞,或者(b)将对此信号的动作更改为忽略。内核在递送一个原来被阻塞(现在解除了阻塞)的信号给进程时(而不是在产生该信号时),才决定对它的处理方式于是进程在信号递送给它之前仍可改变对该信号的动作。进程调用sigpending函数来判定哪些信号是设置为阻塞并处于未决状态的。

每个进程都有一个信号屏蔽字(signal mask),它规定了当前要阻塞递送到该进程的信号集。对于每种可能的信号,该屏蔽字中都有一位与之对应。对于某种信号,若其对应位已设置,则它当前是被阻塞的。进程可以调用sigprocmask来检测和更改其当前信号屏蔽字。

信号数量可能会超过整型所包含的二进制位数,因此POSIX.1定义了一个新数据类型sigset_t,用于保存一个信号集。

 

本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/

posted @ 2014-01-11 10:10  ITtecman  阅读(612)  评论(0编辑  收藏  举报