在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

            表8.15列舉了sigprocmask的語法要點。

            表8.15 sigprocmask函數(shù)語法要點

            所需頭文件

            #includesignal.h>

            函數(shù)原型

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

            函數(shù)傳入值

            how:決定函數(shù)的操作方式

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

            SIG_UNBLOCK:從當(dāng)前的阻塞集合之中刪除一個集合

            SIG_SETMASK:將當(dāng)前的集合設(shè)置為信號阻塞集合

            set:指定信號集

            oset:信號屏蔽字

            函數(shù)返回值

            成功:0

            出錯:-1

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

            最后,表8.16列舉了sigpending函數(shù)的語法要點。

            表8.16 sigpending函數(shù)語法要點

            所需頭文件

            #includesignal.h>

            函數(shù)原型

            intsigpending(sigset_t*set)

            函數(shù)傳入值

            set:要檢測的信號集

            函數(shù)返回值

            成功:0

            出錯:-1

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

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

            (3)使用實例。

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

            /*sigset.c*/

            #includesys/types.h>

            #includeunistd.h>

            #includesignal.h>

            #includestdio.h>

            #includestdlib.h>

            /*自定義的信號處理函數(shù)*/

            voidmy_func(intsignum)

            {

            printf(Ifyouwanttoquit,pleasetrySIGQUITn);

            }

            intmain()

            {

            sigset_tset,pendset;

            structsigactionaction1,action2;

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

            if(sigemptyset(set)0)

            {

            perror(sigemptyset);

            exit(1);

            }

            /*將相應(yīng)的信號加入信號集*/

            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中的信號不會被傳遞給進(jìn)程,暫時進(jìn)入待處理狀態(tài)*/

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

            {

            perror(sigprocmask);

            exit(1);

            }

            else

            {

            printf(Signalsetwasblocked,Pressanykey!);

            getchar();

            }

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

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


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


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


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




            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉