在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 進(jìn)程控制開發(fā)之:Linux進(jìn)程控制編程

            進(jìn)程控制開發(fā)之:Linux進(jìn)程控制編程

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

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

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

            由于wait()的使用較為簡(jiǎn)單,在此僅以waitpid()為例進(jìn)行講解。本例中首先使用()創(chuàng)建一個(gè)子進(jìn)程,然后讓其子進(jìn)程暫停5s(使用了sleep())。接下來(lái)對(duì)原有的父進(jìn)程使用waitpid(),并使用參數(shù)WNOHANG使該父進(jìn)程不會(huì)阻塞。若有子進(jìn)程退出,則waitpid()返回子進(jìn)程號(hào);若沒(méi)有子進(jìn)程退出,則waitpid()返回0,并且父進(jìn)程每隔一秒循環(huán)判斷一次。該程序的流程圖如圖7.5所示。

            圖7.5waitpid示例程序流

            該程序源代碼如下所示:

            /*waitpid.c*/

            #includesys/types.h>

            #includesys/wait.h>

            #includeunistd.h>

            #includestdio.h>

            #includestdlib.h>

            intmain()

            {

            pid_tpc,pr;

            pc=();

            if(pc0)

            {

            printf(Errorn);

            }

            elseif(pc==0)/*子進(jìn)程*/

            {

            /*子進(jìn)程暫停5s*/

            sleep(5);

            /*子進(jìn)程正常退出*/

            exit(0);

            }

            else/*父進(jìn)程*/

            {

            /*循環(huán)測(cè)試子進(jìn)程是否退出*/

            do

            {

            /*調(diào)用waitpid,且父進(jìn)程不阻塞*/

            pr=waitpid(pc,NULL,WNOHANG);

            /*若子進(jìn)程還未退出,則父進(jìn)程暫停1s*/

            if(pr==0)

            {

            printf(Thechildprocesshasnotexitedn);

            sleep(1);

            }

            }while(pr==0);

            /*若發(fā)現(xiàn)子進(jìn)程退出,打印出相應(yīng)情況*/

            if(pr==pc)

            {

            printf(Getchildexitcode:%dn,pr);

            }

            else

            {

            printf(Someerroroccured.n);

            }

            }

            }

            將該程序交叉編譯,下載到目標(biāo)板后的運(yùn)行結(jié)果如下所示:

            $./waitpid

            Thechildprocesshasnotexited

            Thechildprocesshasnotexited

            Thechildprocesshasnotexited

            Thechildprocesshasnotexited

            Thechildprocesshasnotexited

            Getchildexitcode:75

            可見,該程序在經(jīng)過(guò)5次循環(huán)之后,捕獲到了子進(jìn)程的退出信號(hào),具體的子進(jìn)程號(hào)在不同的系統(tǒng)上會(huì)有所區(qū)別。

            讀者還可以嘗試把“pr=waitpid(pc,NULL,WNOHANG);”這句改為“pr=waitpid(pc,NULL,0);”或者“pr=wait(NULL);”,運(yùn)行的結(jié)果為:

            $./waitpid

            Getchildexitcode:76

            可見,在上述兩種情況下,父進(jìn)程在調(diào)用waitpid()或wait()之后就將自己阻塞,直到有子進(jìn)程退出為止。

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

            上一頁(yè) 1 2 3 4 5 下一頁(yè)

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉