詳解wait waitpid的引數 status

2021-10-02 20:08:42 字數 672 閱讀 9627

用到的**:

1 #include

2 #include

3 #include

4 #include

5int

main()

613else

if(pid ==0)

1418

int status;

19while

(waitpid(-

1,&status,wnohang)==0

)//為了等待子程序退出

2024

if(status &

0x7f

)//子程序異常退出時才會進入,這時的(status & 0x7f)>0.

2529

printf

("exit child code:%d\n",(

(status >>8)

&0xff))

;30while(1

)3135return0;

36}

status 引數是乙個輸出型引數,由作業系統填充。 如果傳遞null,表示不關心子程序的退出狀態資訊。如果不為空, 作業系統會根據該引數,將子程序的退出資訊反饋給父程序。

雖然 status 是乙個 int ,但是它的高兩個位元組根本沒有用到,所以我們只研究status低16位。在低16位中,其中:

wait waitpid函式獲取狀態的使用

wifexited wstatus 如果子項正常終止 即通過呼叫exit 3 或 exit 2 或從main 返回 則返回true。wexitstatus wstatus 返回子項的退出狀態。它由狀態引數的最低有效8位組成,該狀態引數的子級是在呼叫exit 3 或 exit 2 時指定的,或者是ma...

變參函式詳解

在呼叫函式時,如果我們希望函式的引數個數是可變的,那麼便需要用到變參函式,既在每次函式呼叫時輸入的引數個數不定。我們需要知道以下兩點 1 函式形參入棧方向為自右向左 2 在乙個程序的記憶體空間中,棧低為高位址,棧頂為低位址。所以我們可以從最後乙個入棧的引數 形參第乙個 根據位址以及棧空間的特點依次找...

Mybatis的幾種傳參方式詳解

前言 單個pttzndv引數 單個引數的傳參比較簡單,可以是任意形式的,比如 或者 但是為了開發規範,盡量使用和入參時一樣。mapper如下 userinfo selectbyuserid string userid xml如下 select from user info where user id...