等待或返回fork的子程序狀態

pcntl_waitpid

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_waitpid等待或返回fork的子程序狀態

說明

pcntl_waitpid(int $pid, int &$status, int $options = 0): int

掛起目前程序的執行直到參數pid指定的程序號的程序退出, 或接收到一個訊號要求中斷目前程序或呼叫一個訊號處理函式。

如果pid指定的子程序在此函式呼叫時已經退出(俗稱殭屍程序),此函式 將立刻返回。關於waitpid更詳細的規範請參見您系統的waitpid(2)手冊。

參數

pid

參數pid的值可以是以下之一:

pid可選值
< -1 等待任意程序組ID等於參數pid給定值的絕對值的程序。
-1 等待任意子程序;與pcntl_wait函式行為一致。
0 等待任意與呼叫程序組ID相同的子程序。
> 0 等待程序號等於參數pid值的子程序。

注意:

指定-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() - 返回導致子程序停止的訊號

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *