信號(hào)(signal)------pause

pause

pause函數(shù)使調(diào)用進(jìn)程掛起直到有信號(hào)遞達(dá)!

int pause(void);

處理方式:

? ? ???? 如果信號(hào)的處理動(dòng)作是終止進(jìn)程,則進(jìn)程終止,pause函數(shù)沒(méi)有機(jī)會(huì)返回;

? ????? 如果信號(hào)的處理動(dòng)作是忽略,則進(jìn)程繼續(xù)處于掛起狀態(tài),pause不返回;

? ? ???? 如果信號(hào)的處理動(dòng)作是捕捉,則調(diào)用了信號(hào)處理函數(shù)之后pause返回-1,errno設(shè)置為EINTR。

? ????? 所以pause只有出錯(cuò)的返回值(類(lèi)似exec函數(shù)家族)。錯(cuò)誤碼EINTR表示“被信號(hào)中斷”。


信號(hào)操作集函數(shù)

int sigemptyset(sigset_t *set);

int sigfillset(sigset_t *set);

int sigaddset(sigset_t *set, int signo);

int sigdelset(sigset_t *set, int signo);

int sigismember(const sigset_t *set, int signo);

前四個(gè)函數(shù)都是成功返回0,出錯(cuò)返回-1;

sigismember是一個(gè)布爾函數(shù),用于判斷一個(gè)信號(hào)集的有效信號(hào)中是否包含某種信號(hào),若包含則返回1,不包含則返回0,出錯(cuò)返回-1。

注意,在使用sigset_t類(lèi)型的變量之前,一定要調(diào) 用sigemptyset或sigfillset做初始化,使信號(hào)集處于確定的狀態(tài)。


sigprocmask函數(shù)

調(diào)用函數(shù)sigprocmask可以讀取或更改進(jìn)程的信號(hào)屏蔽字(阻塞信號(hào)集)。

nt sigprocmask(int how, const sigset_t *set, sigset_t *oset);

如果oset是非空指針,則讀取進(jìn)程的當(dāng)前信號(hào)屏蔽字通過(guò)oset參數(shù)傳出。

如果set是非空指針,則 更改進(jìn)程的信號(hào)屏蔽字?,

參數(shù)how指示如何更改,如果oset和set都是非空指針,則先將原來(lái)的信號(hào) 屏蔽字備份到?oset里,然后根據(jù)set和how參數(shù)更改信號(hào)屏蔽字。

? ?? ?????假設(shè)當(dāng)前的信號(hào)屏蔽字為mask,下表說(shuō)明了how參數(shù)的可選值。

返回值:若成功則為0,若出錯(cuò)則為-1

如果調(diào)用sigprocmask解除了對(duì)當(dāng)前若干個(gè)未決信號(hào)的阻塞,則在sigprocmask返回前,至少將其中 一個(gè)信號(hào)遞達(dá)。


sigpending函數(shù)

int sigpending(sigset_t *set);

sigpending讀取當(dāng)前進(jìn)程的未決信號(hào)集,通過(guò)set參數(shù)傳出。調(diào)用成功則返回0,出錯(cuò)則返回-1。


上述函數(shù)的運(yùn)用

該代碼的功能:

1)先添加2號(hào)信號(hào)到阻塞信號(hào)集中;

(2)用sigprocmask函數(shù)檢測(cè)阻塞信號(hào)集;

(3)接下來(lái)一直讀取未決信號(hào)集,并打印未決信號(hào)集(打印信號(hào)集是沒(méi)有任何意義的,這里只是演示)

(4)10s之前,2號(hào)信號(hào)被設(shè)置為了阻塞狀態(tài),所以當(dāng)產(chǎn)生2號(hào)信號(hào)時(shí),它將會(huì)一直處于未決狀態(tài),不能被遞達(dá),10s后,恢復(fù)原來(lái)的阻塞信號(hào)集,2號(hào)信號(hào)的阻塞狀態(tài)被解除,所以再按Ctrl+C,將會(huì)終止進(jìn)程;


?打印未決信號(hào)集:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 計(jì)算機(jī)系統(tǒng)漫游 代碼從文本到可執(zhí)行文件的過(guò)程(c語(yǔ)言示例):預(yù)處理階段,處理 #inlcude , #defin...
    willdimagine閱讀 3,835評(píng)論 0 5
  • 扇葉鐵線(xiàn)蕨,顧名思義,扇葉形,但今天給大家安利的是它的功效,如果把這個(gè)其貌不揚(yáng)的植物比作是一個(gè)動(dòng)物的話(huà),那一定是奶...
    vivi_cdd1閱讀 2,545評(píng)論 0 0
  • 輕諾者寡信
    leler閱讀 179評(píng)論 0 0
  • 金秋十月的最后一天早晨,我們小四班的爸爸媽媽和寶貝們?cè)诤挽愕年?yáng)光中踏入了馬榮幼兒園。得到老師的邀請(qǐng),十分榮幸地參加...
    咕嚕麻麻奎尼閱讀 273評(píng)論 0 1
  • 從小我就是一個(gè)極度沒(méi)有安全感的人,遇到任何一個(gè)人我都會(huì)害怕,都會(huì)膽怯。我慢慢的長(zhǎng)大,開(kāi)始不時(shí)的思考我為何沒(méi)有安全感...
    暗涌心生閱讀 339評(píng)論 0 0

友情鏈接更多精彩內(nèi)容