2013-01-06 144 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