我正在学习 Unix 中的信号处理,并且很难理解SIG_SETMASK
它们o_set
是sigprocmask()
什么,它们是做什么的?
我了解它set
包含要阻止或解除SIG_BLOCK
阻止的信号列表,并阻止列表中的信号并SIG_UNBLOCK
解除阻止它们。
sigprocmask(SIG_SETMASK,&set,& o_set);
Linux 联机帮助页很好地解释了这一点。
如果该参数不为空,则信号掩码的先前值存储在最后一个参数(旧集)中。
SIG_SETMASK
设置当前信号集。我不确定还有什么要说的 -SIG_BLOCK
并将SIG_UNBLOCK
当前信号掩码与第二个参数结合起来,SIG_SETMASK
无论当前值如何都设置它。
POSIX是这样解释的:
SIG_BLOCK
结果集应是当前集和集指向的信号集的并集。SIG_SETMASK
结果集应为 set 所指向的信号集。
SIG_UNBLOCK
结果集应为当前集与集所指向的信号集的补集的交集。