(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
pcntl_waitpid — 等待或返回fork的子進(jìn)程狀態(tài)
$pid
, int &$status
, int $options
= 0): int
掛起當(dāng)前進(jìn)程的執(zhí)行直到參數(shù)pid
指定的進(jìn)程號的進(jìn)程退出,
或接收到一個信號要求中斷當(dāng)前進(jìn)程或調(diào)用一個信號處理函數(shù)。
如果pid
指定的子進(jìn)程在此函數(shù)調(diào)用時已經(jīng)退出(俗稱僵尸進(jìn)程),此函數(shù)
將立刻返回。關(guān)于waitpid更詳細(xì)的規(guī)范請參見您系統(tǒng)的waitpid(2)手冊。
pid
參數(shù)pid
的值可以是以下之一:
< -1 |
等待任意進(jìn)程組ID等于參數(shù)pid 給定值的絕對值的進(jìn)程。
|
-1 |
等待任意子進(jìn)程;與pcntl_wait函數(shù)行為一致。 |
0 |
等待任意與調(diào)用進(jìn)程組ID相同的子進(jìn)程。 |
> 0 |
等待進(jìn)程號等于參數(shù)pid 值的子進(jìn)程。
|
注意:
指定
-1
作為pid
的值等同于pcntl_wait() 提供(負(fù)的options
)。
status
pcntl_waitpid()將會存儲狀態(tài)信息到status
參數(shù)上,這個通過status
參數(shù)返回的狀態(tài)信息可以用以下函數(shù)
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig()以及
pcntl_wstopsig()獲取其具體的值。
options
如果您的操作系統(tǒng)(多數(shù)BSD類系統(tǒng))允許使用wait3,您可以提供可選的options
參數(shù)。如果這個參數(shù)沒有提供,wait將會被用作系統(tǒng)調(diào)用。如果wait3不可用,提供參數(shù)
options
不會有任何效果。options
的值可以是0
或者以下兩個常量或兩個常量“或運(yùn)算”結(jié)果(即兩個常量代表意義都有效)。
WNOHANG |
如果沒有子進(jìn)程退出立刻返回。 |
WUNTRACED |
子進(jìn)程已經(jīng)退出并且其狀態(tài)未報告時返回。 |
pcntl_waitpid()返回退出的子進(jìn)程進(jìn)程號,發(fā)生錯誤時返回-1,如果提供了
WNOHANG
作為option(wait3可用的系統(tǒng))并且沒有可用子進(jìn)程時返回0。