Unix中的信号处理

时间:2013-01-06 15:43:33

标签: c unix signals

我正在学习Unix中的信号处理,并且很难理解SIG_SETMASK中的o_setsigprocmask()以及他们做了什么?

我了解set包含要阻止或取消阻止的信号列表,SIG_BLOCK阻止列表中的信号,SIG_UNBLOCK取消阻止它们。

sigprocmask(SIG_SETMASK,&set,& o_set);

1 个答案:

答案 0 :(得分:3)

Linux manpage很好地解释了这一点。

如果该参数非空,则信号掩码的先前值存储在最后一个参数(旧集)中。

SIG_SETMASK设置当前信号集。我不确定还有什么可说的 - SIG_BLOCKSIG_UNBLOCK将当前信号掩码与第二个参数组合在一起,SIG_SETMASK无论当前值如何都设置它。

POSIX解释如下:

  

SIG_BLOCK
  结果集应该是当前集和由set指向的信号集的并集。   SIG_SETMASK
  结果集应为set指向的信号集   SIG_UNBLOCK
  结果集应该是当前集和由set指向的信号集的补码的交集。