pcntl_wait

(PHP 5, PHP 7, PHP 8)

pcntl_wait等待或返回 fork 的子進程狀態(tài)

說明

pcntl_wait(int &$status, int $options = 0, array &$rusage = ?): int

wait函數(shù)掛起當前進程的執(zhí)行直到一個子進程退出或接收到一個信號要求中斷當前進程或調(diào)用一個信號處理函數(shù)。如果一個子進程在調(diào)用此函數(shù)時已經(jīng)退出(俗稱僵尸進程),此函數(shù)立刻返回。子進程使用的所有系統(tǒng)資源將被釋放。關(guān)于 wait 在您系統(tǒng)上工作的詳細規(guī)范請查看您系統(tǒng)的 wait(2)手冊。

注意:

這個函數(shù)等同于以 -1 作為參數(shù) pid 的值并且沒有 options 參數(shù)來調(diào)用 pcntl_waitpid() 函數(shù)。

參數(shù)

status

pcntl_wait() 將會存儲狀態(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 或者以下兩個常量或兩個常量“或運算”結(jié)果(即兩個常量代表意義都有效)。

options可用值
WNOHANG 如果沒有子進程退出立刻返回。
WUNTRACED 子進程已經(jīng)退出并且其狀態(tài)未報告時返回。

返回值

pcntl_wait() 返回退出的子進程進程號,發(fā)生錯誤時返回 -1,如果提供了 WNOHANG 作為 option(wait3可用的系統(tǒng))并且沒有可用子進程時返回 0。

參見

  • pcntl_fork() - 在當前進程當前位置產(chǎn)生分支(子進程)。譯注:fork是創(chuàng)建了一個子進程,父進程和子進程 都從fork的位置開始向下繼續(xù)執(zhí)行,不同的是父進程執(zhí)行過程中,得到的fork返回值為子進程 號,而子進程得到的是0。
  • pcntl_signal() - 安裝一個信號處理器
  • pcntl_wifexited() - 檢查狀態(tài)代碼是否代表一個正常的退出。
  • pcntl_wifstopped() - 檢查子進程當前是否已經(jīng)停止
  • pcntl_wifsignaled() - 檢查子進程狀態(tài)碼是否代表由于某個信號而中斷
  • pcntl_wexitstatus() - 返回一個中斷的子進程的返回代碼
  • pcntl_wtermsig() - 返回導(dǎo)致子進程中斷的信號
  • pcntl_wstopsig() - 返回導(dǎo)致子進程停止的信號
  • pcntl_waitpid() - 等待或返回fork的子進程狀態(tài)