0

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

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

sigprocmask(SIG_SETMASK,&set,& o_set);
4

1 回答 1

3

Linux 联机帮助页很好地解释了这一点。

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

SIG_SETMASK设置当前信号集。我不确定还有什么要说的 -SIG_BLOCK并将SIG_UNBLOCK当前信号掩码与第二个参数结合起来,SIG_SETMASK无论当前值如何都设置它。

POSIX是这样解释的:

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

于 2013-01-06T15:48:12.670 回答