SIGALRM被掩码阻止

时间:2015-03-21 11:51:40

标签: unix signals

我怀疑当SIGALRM信号被阻塞时会发生什么,它是否会进入待处理状态并在被解除阻塞后被传送或者是否会丢失?

1 个答案:

答案 0 :(得分:0)

SIGALRM保持待定状态,并在解锁后立即发送。

阻塞信号(SIG_BLOCK)保持挂起状态,直到它为止:

  1. 已发送,通过取消阻止并具有默认(SIG_DFL或"未捕获")处置或用户提供的("捕获")处置,由struct sigaction' s sa_handler
  2. 已接受sigwaitsigwaitinfosigtimedwait,表示已从待处理信号集中删除,无需采取进一步措施
  3. 废弃,将其处置方式更改为SIG_IGN("忽略")。已经忽略了信号will not be held pending in any case
  4. 传统的UNIX信号通常不会排队,因此一次只有一个给定类型的信号可能处于待处理状态,随后生成的相同类型的信号将丢失。

    (另外,实现选择信号传递和接受的顺序,例如,在更高编号的信号之前始终传递或接受较低编号的信号。这意味着如果其他信号可能不会首先传送新的未阻止的SIGALRM信号已准备好交付。但实际上,它会立即发送。)