Linux 信号随笔
POSIX標準定義了數(shù)據(jù)類型sigset_t來表示信號集。
每一個進程都有一個信號屏蔽碼,它規(guī)定了當前阻塞而不能遞送給該進程的信號集。函數(shù)sigprocmask可以檢測或者更改進程的信號屏蔽碼。
int sigprocmask(int how, const sigset_t * set, sigset_t * oldset);
如果oldset為非空指針,則該進程之前的信號屏蔽碼通過oldset返回。
如果set為非空指針,則該函數(shù)將根據(jù)how來修改信號當前的屏蔽碼,how的取值如下:
(1)SIG_BLOCK:將進程新的信號屏蔽碼設(shè)置成為當前信號屏蔽碼和set指向信號集的并集。
(2)SIG_UNBLOC:將進程新的信號屏蔽碼設(shè)置成為當前信號屏蔽碼中,刪除set所指向的信號集,即set指針包含著我們希望解除阻塞的信號。即使對當前信號屏蔽碼中不存在的信號使用SIG_UNBLOCK也是合法的。
(3)SIG_SETMASK:將進程新的信號屏蔽碼設(shè)置成為set所指向的。
?
2.? sigpending函數(shù)
int sigpengding(sigset_t *set);用來獲取當前未決的信號集。
3. sigsuspend函數(shù)
int sigsuspend(const sigset_t * mask);將進程屏蔽碼設(shè)置成為mask,然后與pause函數(shù)一樣,等待信號的發(fā)生并執(zhí)行完信號處理函數(shù)。信號處理函數(shù)執(zhí)行完后再把進程的信號屏蔽碼設(shè)置為原來的屏蔽字,然后sigsuspend函數(shù)才返回。sigsuspeng保證改變進程的屏蔽碼和將進程掛起等待信號的操作是原子操作。
?
?
?
?
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/nathan-1988/archive/2012/06/25/2560872.html
總結(jié)
以上是生活随笔為你收集整理的Linux 信号随笔的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word 2010 从第三页开始设置页码
- 下一篇: 【转】在python下使用包progre