可靠信号的术语和语义

2014-08-22 13:31:18   最后更新: 2014-08-22 13:31:18   访问数量:808




当引发信号的时间发生时,内核向进程发送一个信号,事件可以是硬件异常(如除以0)、软件条件(如alarm计时器超时)、终端产生的信号或调用kill函数产生的信号

信号产生时,内核通常在进程表中设置一个某种形式的标志,这一动作,我们称之为“向进程递送了一个信号”,信号产生和递送之间,称信号是“未决的”

进程可以选用信号递送阻塞,如果为进程产生了一个选择为阻塞的信号,而且对该信号的动作是系统默认动作或捕捉该信号,则为该进程将此信号保持未决状态,知道进程对此信号解除阻塞,或将此信号的动作改为忽略

  • 需要注意的是,内核是在递送信号的时候决定信号的动作的,而不是在信号产生时,因此进程可以在信号递送给他之前改变信号的动作

通过调用 sigpending 函数可以判定哪些信号被设置为阻塞并处于未决状态

在进程解除对某个信号的阻塞之前,大多数UNIX实现不允许系统递送该信号多次,相同信号只会递送一次

每个进程都有一个信号屏蔽字,规定了当前要阻塞递送到进程的信号集,每种可能的信号,该屏蔽字中都有一位与之对应,进程可以调用 sigprocmask 函数来检测和更改其当前信号屏蔽字

 






读书笔记      技术帖      linux      unix      龙潭书斋      apue      unix环境高级编程      信号      sigpending      sigprocmask      信号集     


京ICP备15018585号