内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

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

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

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

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

sigsuspend函數(shù)示例

頭文件:#include<signal.h>

一個(gè)保護(hù)臨界區(qū)代碼的錯(cuò)誤實(shí)例:(sigprocmask()和pause()實(shí)現(xiàn))

#include<unistd.h>

#include<signal.h>

#include<stdio.h>

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

{

printf("SIGINTsig");

}

intmain()

{

sigset_tnew,old;

structsigactionact;

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

sigemptyset(&act.sa_mask);

act.sa_flags=0;

sigaction(SIGINT,&act,0);//準(zhǔn)備捕捉SIGINT信號(hào)

sigemptyset(&new);

sigaddset(&new,SIGINT);

sigprocmask(SIG_BLOCK,&new,&old);//將SIGINT信號(hào)阻塞,同時(shí)保存當(dāng)前信號(hào)集

printf("Blocked");

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

pause();

return0;

}

上面實(shí)例的問題是:本來期望pause()之后,來SIGINT信號(hào),可以結(jié)束程序;可是,如果當(dāng)“取消阻塞”和“pause”之間,正好來了SIGINT信號(hào),結(jié)果程序因?yàn)閜ause的原因會(huì)一直掛起。。

sigsuspend函數(shù)問題解決

如果在信號(hào)阻塞時(shí)將其發(fā)送給進(jìn)程,那么該信號(hào)的傳遞就被推遲直到對它解除了阻塞。對應(yīng)用程序而言,該信號(hào)好像發(fā)生在解除對SIGINT的阻塞和pause之間。如果發(fā)生了這種情況,或者如果在解除阻塞時(shí)刻和pause之間確實(shí)發(fā)生了信號(hào),那么就產(chǎn)生了問題。因?yàn)槲覀兛赡懿粫?huì)再見到該信號(hào),所以從這種意義上而言,在此時(shí)間窗口(解除阻塞和pause之間)中發(fā)生的信號(hào)丟失了,這樣就使pause永遠(yuǎn)阻塞。

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

#include<signal.h>

intsigsuspend(constsigset_t*sigmask);

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

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

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

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

當(dāng)前題目:sigsuspend函數(shù)有什么用-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.rwnh.cn/article22/cseejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站網(wǎng)站導(dǎo)航、ChatGPT、建站公司做網(wǎng)站、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
双桥区| 永胜县| 股票| 慈溪市| 乌审旗| 新竹市| 科技| 遂宁市| 富宁县| 兴城市| 太湖县| 行唐县| 醴陵市| 双牌县| 虎林市| 惠安县| 呼玛县| 渭南市| 林州市| 囊谦县| 和平县| 无锡市| 逊克县| 瑞丽市| 富顺县| 凤山县| 肥乡县| 闵行区| 泰和县| 新闻| 道真| 旬邑县| 聂拉木县| 自治县| 东乡| 龙口市| 河间市| 宁河县| 邹城市| 聂荣县| 庆安县|