真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

sigsuspend函數(shù)有什么用-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)sigsuspend函數(shù)有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、全州網(wǎng)站維護、網(wǎng)站推廣。

sigsuspend函數(shù)作用:如果在等待信號發(fā)生時希望去休眠,則使用sigsuspend函數(shù)是非常合適的。

sigsuspend函數(shù)示例

頭文件:#include

一個保護臨界區(qū)代碼的錯誤實例:(sigprocmask()和pause()實現(xiàn))

#include

#include

#include

voidhandler(intsig)//信號處理函數(shù)的實現(xiàn)

{

printf("SIGINTsig");

}

intmain()

{

sigset_tnew,old;

structsigactionact;

act.sa_handler=handler;//信號處理函數(shù)handler

sigemptyset(&act.sa_mask);

act.sa_flags=0;

sigaction(SIGINT,&act,0);//準備捕捉SIGINT信號

sigemptyset(&new);

sigaddset(&new,SIGINT);

sigprocmask(SIG_BLOCK,&new,&old);//將SIGINT信號阻塞,同時保存當前信號集

printf("Blocked");

sigprocmask(SIG_SETMASK,&old,NULL);//取消阻塞

pause();

return0;

}

上面實例的問題是:本來期望pause()之后,來SIGINT信號,可以結(jié)束程序;可是,如果當“取消阻塞”和“pause”之間,正好來了SIGINT信號,結(jié)果程序因為pause的原因會一直掛起。。

sigsuspend函數(shù)問題解決

如果在信號阻塞時將其發(fā)送給進程,那么該信號的傳遞就被推遲直到對它解除了阻塞。對應(yīng)用程序而言,該信號好像發(fā)生在解除對SIGINT的阻塞和pause之間。如果發(fā)生了這種情況,或者如果在解除阻塞時刻和pause之間確實發(fā)生了信號,那么就產(chǎn)生了問題。因為我們可能不會再見到該信號,所以從這種意義上而言,在此時間窗口(解除阻塞和pause之間)中發(fā)生的信號丟失了,這樣就使pause永遠阻塞。

為了糾正此問題,需要在一個原子操作中先恢復(fù)信號屏蔽字,然后使進程休眠。這種功能是由sigsuspend函數(shù)提供的。

#include

intsigsuspend(constsigset_t*sigmask);

返回值:-1,并將errno設(shè)置為EINTR

將進程的信號屏蔽字設(shè)置為由sigmask指向的值。在捕捉到一個信號或發(fā)生了一個會終止該進程的信號之前,該進程被掛起。如果捕捉到一個信號而且從該信號處理程序返回,則sigsuspend返回,并且將該進程的信號屏蔽字設(shè)置為調(diào)用sigsuspend之前的值。

注意,此函數(shù)沒有成功返回值。如果它返回到調(diào)用者,則總是返回-1,并將errno設(shè)置為EINTR(表示一個被中斷的系統(tǒng)調(diào)用)。

關(guān)于“sigsuspend函數(shù)有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


文章標題:sigsuspend函數(shù)有什么用-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://weahome.cn/article/cseejc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部