pcntl_waitpid
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 и нет доступного потомка.
Таблица 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().