久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

淺談進(jìn)程退出狀態(tài)

 小換換 2009-08-04

在多進(jìn)程的程序中,,我們可以使用函數(shù)wait或waitpid在父進(jìn)程里接收子進(jìn)程的退出狀態(tài),,如下面的代碼所示:

int status;
        ……

if (fork() = = 0)               // 子進(jìn)程
         {
         ……

exit(0);
         }
         else
         {
                   wait(&status);               // 父進(jìn)程
                   ……

}

整型變量status里保存的就是子進(jìn)程退出時(shí)的狀態(tài)。根據(jù)子進(jìn)程結(jié)束的方式,,其退出狀態(tài)分為兩種:一,、正常退出 二、被信號(hào)結(jié)束,。對(duì)于第一種情況,,如果子進(jìn)程的代碼里顯式調(diào)用了函數(shù)exit(n)/_exit(n)/return (n)時(shí),status里就包含了值n,;否則的話,,status里包含的值就等于子進(jìn)程執(zhí)行的最后一條語(yǔ)句的返回值。

對(duì)于第二種情況,,status里包含的值就等于中斷該子進(jìn)程的信號(hào)的編號(hào)即信號(hào)類(lèi)型,。

我們可以使用系統(tǒng)中定義的宏來(lái)判斷并顯示status的值,如下所示:

if( WIFEXITED(status) )

              printf(“exit normally! The return code is %d\n”, WEXITSTATUS(stat));

else if( WIFSIGNALED(status))

              printf(“exit abnormally! The signal code is %d\n”, WTERMSIG(stat));

相關(guān)宏的定義如下:

#define __WAIT_INT(status)               status

#define WIFEXITED(status)               __WIFEXITED(__WAIT_INT(status))

#define __WIFEXITED(status)               (__WTERMSIG(status) == 0)

#define __WTERMSIG(status)               ((status) & 0x7f)

#define WEXITSTATUS(status)               __WEXITSTATUS(__WAIT_INT(status))

#define __WEXITSTATUS(status)               (((status) & 0xff00) >> 8)

由此可見(jiàn),,當(dāng)子進(jìn)程正常結(jié)束時(shí),,返回值保存在status的倒數(shù)第二個(gè)字節(jié)里,此時(shí)最低字節(jié)里的值應(yīng)為0,; 當(dāng)子進(jìn)程被信號(hào)終止時(shí),,對(duì)應(yīng)的信號(hào)的類(lèi)型就保存在status的最低字節(jié)里。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多