2013-01-06 102 views
0

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

我明白set包含的被阻挡的信号或畅通,并SIG_BLOCK块列表中的信号列表和SIG_UNBLOCK放开它们。

sigprocmask(SIG_SETMASK,&set,& o_set); 

回答

3

Linux manpage解释得很好。

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

SIG_SETMASK设置当前信号集。我不确定还有什么要说的 - SIG_BLOCKSIG_UNBLOCK将当前信号掩码和第二个参数SIG_SETMASK组合起来,而不管当前值如何。

POSIX解释它是这样的:

SIG_BLOCK
所得集是当前的一组工会和信号组通过组指出。 SIG_SETMASK
结果集应该是集指向的信号集。
SIG_UNBLOCK
得到的集合应该是当前集合和集合指向的信号集合的补集的交集。

+0

Mat请检查我的关于sig_setmask的程序。 http://stackoverflow.com/questions/14184272/signals-handling-in-c – Alfred