(PHP 4 >= 4.1.0, PHP 5)
pcntl_waitpid — 等待或返回fork的子進程狀態
說明
int pcntl_waitpid ( int$pid
, int &$status
[, int $options
= 0
] )
掛起當前進程的執行直到參數pid
指定的進程號的進程退出,
或接收到一個信號要求中斷當前進程或調用一個信號處理函數。
如果pid
指定的子進程在此函數調用時已經退出(俗稱僵尸進程),此函數
將立刻返回。關于waitpid更詳細的規范請參見您系統的waitpid(2)手冊。
參數
pid
參數pid
的值可以是以下之一:
pid
可選值
< -1
等待任意進程組ID等于參數pid
給定值的絕對值的進程。
-1
等待任意子進程;與pcntl_wait函數行為一致。
0
等待任意與調用進程組ID相同的子進程。
> 0
等待進程號等于參數pid
值的子進程。
Note:
指定-1作為pid
的值等同于pcntl_wait()
提供(負的options
)。
status
pcntl_waitpid()將會存儲狀態信息到status
參數上,這個通過status
參數返回的狀態信息可以用以下函數
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig()以及
pcntl_wstopsig()獲取其具體的值。
options
如果您的操作系統(多數BSD類系統)允許使用wait3,您可以提供可選的options
參數。如果這個參數沒有提供,wait將會被用作系統調用。如果wait3不可用,提供參數
options
不會有任何效果。options
的值可以是0
或者以下兩個常量或兩個常量“或運算”結果(即兩個常量代表意義都有效)。
options
可用的值
WNOHANG
如果沒有子進程退出立刻返回。
WUNTRACED
子進程已經退出并且其狀態未報告時返回。
返回值
pcntl_waitpid()返回退出的子進程進程號,發生錯誤時返回-1,如果提供了
WNOHANG
作為option(wait3可用的系統)并且沒有可用子進程時返回0。
參見
pcntl_fork() - 在當前進程當前位置產生分支(子進程)。譯注:fork是創建了一個子進程,父進程和子進程 都從fork的位置開始向下繼續執行,不同的是父進程執行過程中,得到的fork返回值為子進程 號,而子進程得到的是0。 pcntl_signal() - 安裝一個信號處理器 pcntl_wifexited() - 檢查狀態代碼是否代表一個正常的退出。 pcntl_wifstopped() - 檢查子進程當前是否已經停止 pcntl_wifsignaled() - 檢查子進程狀態碼是否代表由于某個信號而中斷 pcntl_wexitstatus() - 返回一個中斷的子進程的返回代碼 pcntl_wtermsig() - 返回導致子進程中斷的信號 pcntl_wstopsig() - 返回導致子進程停止的信號