<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 進(jìn)程間通信之:信號

進(jìn)程間通信之:信號

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257126.htm

表8.15列舉了sigprocmask的語(yǔ)法要點(diǎn)。

表8.15 sigprocmask函數語(yǔ)法要點(diǎn)

所需頭文件

#includesignal.h>

函數原型

intsigprocmask(inthow,constsigset_t*set,sigset_t*oset)

函數傳入值

how:決定函數的操作方式

SIG_BLOCK:增加一個(gè)集合到當前進(jìn)程的阻塞集合之中

SIG_UNBLOCK:從當前的阻塞集合之中刪除一個(gè)集合

SIG_SETMASK:將當前的集合設置為信號阻塞集合

set:指定信號集

oset:信號屏蔽字

函數返回值

成功:0

出錯:-1

此處,若set是一個(gè)非空指針,則參數how表示函數的操作方式;若how為空,則表示忽略此操作。

最后,表8.16列舉了sigpending函數的語(yǔ)法要點(diǎn)。

表8.16 sigpending函數語(yǔ)法要點(diǎn)

所需頭文件

#includesignal.h>

函數原型

intsigpending(sigset_t*set)

函數傳入值

set:要檢測的信號集

函數返回值

成功:0

出錯:-1

總之,在處理信號時(shí),一般遵循如圖8.7所示的操作流程。

圖8.7一般的信號操作處理流程

(3)使用實(shí)例。

該實(shí)例首先把SIGQUIT、SIGINT兩個(gè)信號加入信號集,然后將該信號集合設為阻塞狀態(tài),并進(jìn)入用戶(hù)輸入狀態(tài)。用戶(hù)只需按任意鍵,就可以立刻將信號集合設置為非阻塞狀態(tài),再對這兩個(gè)信號分別操作,其中SIGQUIT執行默認操作,而SIGINT執行用戶(hù)自定義函數的操作。源代碼如下所示:

/*sigset.c*/

#includesys/types.h>

#includeunistd.h>

#includesignal.h>

#includestdio.h>

#includestdlib.h>

/*自定義的信號處理函數*/

voidmy_func(intsignum)

{

printf(Ifyouwanttoquit,pleasetrySIGQUITn);

}

intmain()

{

sigset_tset,pendset;

structsigactionaction1,action2;

/*初始化信號集為空*/

if(sigemptyset(set)0)

{

perror(sigemptyset);

exit(1);

}

/*將相應的信號加入信號集*/

if(sigaddset(set,SIGQUIT)0)

{

perror(sigaddset);

exit(1);

}

if(sigaddset(set,SIGINT)0)

{

perror(sigaddset);

exit(1);

}

if(sigismember(set,SIGINT))

{

sigemptyset(action1.sa_mask);

action1.sa_handler=my_func;

action1.sa_flags=0;

sigaction(SIGINT,action1,NULL);

}

if(sigismember(set,SIGQUIT))

{

sigemptyset(action2.sa_mask);

action2.sa_handler=SIG_DFL;

action2.sa_flags=0;

sigaction(SIGQUIT,action2,NULL);

}

/*設置信號集屏蔽字,此時(shí)set中的信號不會(huì )被傳遞給進(jìn)程,暫時(shí)進(jìn)入待處理狀態(tài)*/

if(sigprocmask(SIG_BLOCK,set,NULL)0)

{

perror(sigprocmask);

exit(1);

}

else

{

printf(Signalsetwasblocked,Pressanykey!);

getchar();

}

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

模擬信號相關(guān)文章:什么是模擬信號


linux相關(guān)文章:linux教程


數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>