(PHP 5, PHP 7, PHP 8)
pcntl_wait — 等待或返回 fork 的子進(jìn)程狀態(tài)
&$status
, int $options
= 0, array &$rusage
= ?): intwait函數(shù)掛起當(dāng)前進(jìn)程的執(zhí)行直到一個(gè)子進(jìn)程退出或接收到一個(gè)信號(hào)要求中斷當(dāng)前進(jìn)程或調(diào)用一個(gè)信號(hào)處理函數(shù)。如果一個(gè)子進(jìn)程在調(diào)用此函數(shù)時(shí)已經(jīng)退出(俗稱僵尸進(jìn)程),此函數(shù)立刻返回。子進(jìn)程使用的所有系統(tǒng)資源將被釋放。關(guān)于 wait 在您系統(tǒng)上工作的詳細(xì)規(guī)范請查看您系統(tǒng)的 wait(2)手冊。
注意:
這個(gè)函數(shù)等同于以
-1
作為參數(shù)pid
的值并且沒有options
參數(shù)來調(diào)用 pcntl_waitpid() 函數(shù)。
status
pcntl_wait() 將會(huì)存儲(chǔ)狀態(tài)信息到 status
參數(shù)上,這個(gè)通過 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ù)。如果這個(gè)參數(shù)沒有提供,wait將會(huì)被用作系統(tǒng)調(diào)用。如果wait3不可用,提供參數(shù)
options
不會(huì)有任何效果。options
的值可以是0
或者以下兩個(gè)常量或兩個(gè)常量“或運(yùn)算”結(jié)果(即兩個(gè)常量代表意義都有效)。
WNOHANG |
如果沒有子進(jìn)程退出立刻返回。 |
WUNTRACED |
子進(jìn)程已經(jīng)退出并且其狀態(tài)未報(bào)告時(shí)返回。 |
pcntl_wait() 返回退出的子進(jìn)程進(jìn)程號(hào),發(fā)生錯(cuò)誤時(shí)返回 -1,如果提供了 WNOHANG 作為 option(wait3可用的系統(tǒng))并且沒有可用子進(jìn)程時(shí)返回 0。