(PHP 4 >= 4.1.0, PHP 5, PHP 7)
pcntl_waitpid — Ожидает или возвращает статус порожденного дочернего процесса
$pid
, int &$status
[, int $options
= 0
[, array &$rusage
]] ) : int
Функция ожидания приостанавливает выполнение текущего процесса до тех пор,
пока дочерний процесс, указанный в аргументе pid
,
не завершится или пока не будет получен сигнал
который завершает текущий процесс или вызывает функцию обработки сигнала.
Если дочений процесс, указанный в аргументе pid
,
уже завершился ко времени вызова
(так называемые "зомби" процессы), функция незамедлительно вернёт управление.
Любые системные ресурсы используемые дочерним процессом будут освобождены.
Обратитесь к вашей системному рукодводству (man) waitpid(2) для уточнения
специфики работы waitpid в вашей системе.
pid
Аргумент pid
может принимать одно из следующих
значений:
< -1 |
ожидать любой дочерний процесс, у которого значение
идентификатор группы процессов (group ID)
равно модулую значения аргумента |pid |.
|
-1 | ожидать любой дочерний процесс; это такое же поведение, что и у функции wait. |
0 | ожидать любой дочерний процесс, идентификатор группы процессов (group ID) которого равен идентификатору текущего процесса. |
> 0 |
ожидать дочерний процесс ID которого равен pid .
|
Замечание:
Указание -1 в качестве
pid
- это аналог функции pcntl_wait() (минусoptions
).
status
pcntl_waitpid() разместит информацию о статусе
по ссылке в аргументе status
, который может
быть передан в слудующие функции:
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig() и
pcntl_wstopsig().
options
Значение аргумента options
- это битовая маска,
которая может принимать значение ноль или более путем логического объединения следующих констант:
WNOHANG | Незамедлительно вернуть управление, если ни один из дочерних процессов не завершен |
WUNTRACED | Вернуть управление для остановленных дочерних процессов, о статусе которых ещё не сообщено |
pcntl_wait() возвращает ID завершенного дочернего процесса,
-1 при ошибке или ноль, если WNOHANG
был передан в аргумент
options
и не было доступных дочерних процессов.