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