Учебник PHP

         

pcntl_waitpid

(PHP 4 >= 4.1.0)

pcntl_waitpid - ожидает или возвращает статус разветвлённого потомка.

Описание

int pcntl_waitpid (int pid, int status, int options)

Функция pcntl_waitpid() задерживает выполнение текущего процесса, пока потомок pid не выполнит выход или пока не будет получен сигнал, акцией которого является окончание текущего процесса или вызов обработки сигнала. Если потомок как запрошенный pid уже выполнил выход в момент вызова (так называемый "zombie"-процесс), функция возвращает немедленно. Любые системные ресурсы, используемые потомком, освобождаются. См. в вашей системной man-странице waitpid(2) специфические детали о работе waitpid в вашей системе.

pcntl_waitpid() возвращает process ID вышедшего потомка, -1 при ошибке или нуль, если была использована WNOHANG и нет доступного потомка.

Значением pid может быть:

Таблица 1. Возможные значения pid
< -1 ожидать любой дочерний процесс, чей process group ID равен абсолютному значению pid.
-1ожидать любой дочерний процесс; то же поведение, что и у функции wait.
0ожидать любой дочерний процесс, чей process group ID равен аналогичному ID вызывающего процесса.
> 0ожидать любой дочерний процесс, чей process ID равен значению pid.

pcntl_waitpid() сохранит информацию статуса в параметре status, который может быть вычислен с использование следующих функций: pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig() и pcntl_wstopsig().

Значением options является значение нуль или более следующих двух глобальных констант, которые OR друг с другом:

Таблица 2. Возможные значения options
WNOHANGвозвращает немедленно, если ни один потомок не выполнил выход.
WUNTRACEDвозвращает для остановленных потомков, чей статус не сообщён.

См. также pcntl_fork(), pcntl_signal(), pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig() и pcntl_wstopsig().

Содержание раздела