(PHP 5)
pcntl_wait — 等待或返回fork的子進程狀態
說明
int pcntl_wait ( int&$status
[, int $options
= 0
] )
wait函數刮起當前進程的執行直到一個子進程退出或接收到一個信號要求中斷當前進程或調用一個信號處理函數。 如果一個子進程在調用此函數時已經退出(俗稱僵尸進程),此函數立刻返回。子進程使用的所有系統資源將 被釋放。關于wait在您系統上工作的詳細規范請查看您系統的wait(2)手冊。
Note:
這個函數等同于以-1作為參數pid
的值并且沒有options
參數來調用pcntl_waitpid()
函數。
參數
status
pcntl_wait()將會存儲狀態信息到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_wait()返回退出的子進程進程號,發生錯誤時返回-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() - 返回導致子進程停止的信號 pcntl_waitpid() - 等待或返回fork的子進程狀態