Driver86
@Driver86
Немодератор toster.ru

Как конкретно работает в PHP функция pcntl_waitpid?

Есть демон на php, выполняющий в цикле разные задачи, в частности: иногда в определённое время порождает процессы и убивает их, если они слишком долго выполняют поставленную задачу. Но не учёл в демоне такую вещь, как зомби-процесс. Т.е. в идеале демон должен получать от детей сигнал при завершении работы. Надо использовать pcntl_waitpid, но из короткой документации не могу понять, эта функция вообще что ли останавливает выполнение скрипта, пока ребёнок не завершит свою работу, или как ?

Что например делает:
pcntl_waitpid($pid, $status, WNOHANG);
Проверяет статус?
Или ждёт, пока процесс завершиться и вернёт статус, останавливая работу родителя на значительное время?
  • Вопрос задан
  • 597 просмотров
Решения вопроса 1
selivanov_pavel
@selivanov_pavel
Linux admin
> эта функция вообще что ли останавливает выполнение скрипта, пока ребёнок не завершит свою работу, или как ?
да:
> Suspends execution of the current process until a child as specified by the pid argument has exited
но это можно переопределить параметром options:
> possible values for options
> WNOHANG return immediately if no child has exited.
> WUNTRACED return for children which are stopped, and whose status has not been reported.

> Что например делает:
> pcntl_waitpid($pid, $status, WNOHANG);

Сразу запишет в status состояние завершённого или всё ещё работающего child.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы