0
我正在学习Unix中的信号处理,并且很难理解sigprocmask()
中的SIG_SETMASK
和o_set
,它们是做什么的?Unix中的信号处理
我明白set
包含的被阻挡的信号或畅通,并SIG_BLOCK
块列表中的信号列表和SIG_UNBLOCK
放开它们。
sigprocmask(SIG_SETMASK,&set,& o_set);
我正在学习Unix中的信号处理,并且很难理解sigprocmask()
中的SIG_SETMASK
和o_set
,它们是做什么的?Unix中的信号处理
我明白set
包含的被阻挡的信号或畅通,并SIG_BLOCK
块列表中的信号列表和SIG_UNBLOCK
放开它们。
sigprocmask(SIG_SETMASK,&set,& o_set);
Linux manpage解释得很好。
如果该参数非空,则信号掩码的前一个值将存储在最后一个参数(旧集合)中。
SIG_SETMASK
设置当前信号集。我不确定还有什么要说的 - SIG_BLOCK
和SIG_UNBLOCK
将当前信号掩码和第二个参数SIG_SETMASK
组合起来,而不管当前值如何。
POSIX解释它是这样的:
SIG_BLOCK
所得集是当前的一组工会和信号组通过组指出。SIG_SETMASK
结果集应该是集指向的信号集。
SIG_UNBLOCK
得到的集合应该是当前集合和集合指向的信号集合的补集的交集。
Mat请检查我的关于sig_setmask的程序。 http://stackoverflow.com/questions/14184272/signals-handling-in-c – Alfred