SIGALRM被口罩遮挡

SotirisD

我对SIGALRM信号被阻塞,它进入待处理状态并在解除阻塞后传递还是丢失感到怀疑吗?

pil

SIGALRM处于待处理状态,它将在不受阻碍的情况下立即交付。

被阻塞的信号(SIG_BLOCK)保持挂起状态,直到:

  1. 通过解除阻止并具有默认设置(SIG_DFL或“未捕获”)配置或由用户提供(“捕获”)配置来交付,如struct sigactionsa_handler
  2. 接受的,由sigwaitsigwaitinfo或者sigtimedwait,这意味着它是从一组未决信号而无需进一步的动作除去
  3. 通过将其处置方式更改为SIG_IGN(“忽略”)来丢弃在任何情况下,已经忽略的信号都不会保持待处理状态

传统的UNIX信号通常不排队,因此一次只能处理一个给定类型的信号,并且随后生成的相同类型的信号将丢失。

(顺便说一句,实现会选择信号传递和接受的顺序,例如,始终先传递或接受数目较小的信号,然后再传递数目较大的信号。这意味着如果其他信号准备就绪,则新近畅通的SIGALRM可能不会首先传递(实际上,它会立即交付。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章