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