我在Unix中学习信号处理,很难理解SIG_SETMASK
中的o_set
和sigprocmask()
是什么,它们是做什么的?
我知道set
包含要阻止或解除阻止的信号列表,SIG_BLOCK
阻止列表中的信号并解除阻止它们。
sigprocmask(SIG_SETMASK,&set,& o_set);
最佳答案
Linux manpage很好地解释了这一点。
如果信号掩码的上一个值为非空,则该值存储在最后一个参数(旧集)中。SIG_SETMASK
设置当前信号集。我不知道还有什么要说的-SIG_BLOCK
和SIG_UNBLOCK
结合当前信号屏蔽和第二个参数,SIG_SETMASK
设置它而不考虑当前值。
POSIX这样解释:SIG_BLOCK
结果集应为电流集和逐集指向的信号集的并集。SIG_SETMASK
结果集应为逐集指向的信号集。SIG_UNBLOCK
结果集应为当前集与逐集指向的信号集的补集的交集。
关于c - Unix中的信号处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14183718/