pcntl_waitpid
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
pcntl_waitpid — Ожидает или возвращает статус порождённого дочернего процесса
Описание
pcntl_waitpid(
int $process_id
,
int &$status
,
int $flags
= 0,
array &$resource_usage
= []):
int
Если дочерний процесс, указанный в аргументе process_id
,
уже завершился ко времени вызова
(так называемые "зомби" процессы), функция незамедлительно вернёт управление.
Любые системные ресурсы используемые дочерним процессом будут освобождены.
Обратитесь к вашей системному руководству waitpid(2) для уточнения
специфики работы waitpid в вашей системе.
Список параметров
process_id
-
Аргумент 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
- это битовая маска,
которая может принимать значение ноль или более путём логического объединения следующих констант:
Возможные значения для flags
WNOHANG |
Незамедлительно вернуть управление, если ни один из дочерних процессов не завершён
|
WUNTRACED |
Вернуть управление для остановленных дочерних процессов, о статусе которых ещё не сообщено
|
Возвращаемые значения
Функция pcntl_wait() возвращает ID завершённого дочернего процесса,
-1, если возникла ошибка, или ноль, если WNOHANG
был передан в аргумент
flags
и не было доступных дочерних процессов.