我在Unix中学习信号处理,很难理解SIG_SETMASK中的o_setsigprocmask()是什么,它们是做什么的?
我知道set包含要阻止或解除阻止的信号列表,SIG_BLOCK阻止列表中的信号并解除阻止它们。

sigprocmask(SIG_SETMASK,&set,& o_set);

最佳答案

Linux manpage很好地解释了这一点。
如果信号掩码的上一个值为非空,则该值存储在最后一个参数(旧集)中。
SIG_SETMASK设置当前信号集。我不知道还有什么要说的-SIG_BLOCKSIG_UNBLOCK结合当前信号屏蔽和第二个参数,SIG_SETMASK设置它而不考虑当前值。
POSIX这样解释:
SIG_BLOCK
结果集应为电流集和逐集指向的信号集的并集。
SIG_SETMASK
结果集应为逐集指向的信号集。
SIG_UNBLOCK
结果集应为当前集与逐集指向的信号集的补集的交集。

关于c - Unix中的信号处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14183718/

10-11 23:16
查看更多