pcntl_wait
(PHP 5, PHP 7, PHP 8)
pcntl_wait — 等待或返回 fork 的子程序狀態
說明
&$status
, int $options
= 0, array &$rusage
= ?): intwait函式掛起目前程序的執行直到一個子程序退出或接收到一個訊號要求中斷目前程序或呼叫一個訊號處理函式。如果一個子程序在呼叫此函式時已經退出(俗稱殭屍程序),此函式立刻返回。子程序使用的所有系統資源將被釋放。關於 wait 在您系統上工作的詳細規範請檢視您系統的 wait(2)手冊。
注意:
這個函式等同於以
-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的子程序狀態