(PHP 8 >= 8.4.0)
pcntl_waitid — Ожидает, пока дочерний процесс изменит состояние
$idtype = P_ALL,$id = null,&$info = [],$flags = WEXITED,&$resource_usage = []Функция получает информацию о статусе, которая относится к событиям завершения, остановки и (или) продолжения в дочерних процессах родительского процесса.
   Функция заблокирует процесс, который вызвал дочерние процессы, до тех пор, пока не возникнет ошибка
   или у функции не появится доступ к информации о состоянии, которая удовлетворяет каждому из следующих условий,
   если только не передали флаг WNOHANG:
   
idtype
      и id.
     
    flags.
     
    Функция вернёт результат немедленно, если доступ к информации об изменении статуса дочернего процесса появился до вызова функции pcntl_waitid(). Порядок, в котором функция сообщит о статусе дочерних процессов, не определили, если доступ к информации об изменении статуса появился для двух или большего количества дочерних процессов.
Замечание:
Документация касается POSIX-спецификации функции
waitid, и ряд дополнительных параметров, которые характерны для реализации функции в системах Linux, NetBSD и FreeBSD. Подробнее о работе функцииwaitidв текущей системе рассказывает man-страница руководства к функцииwaitid(2)конкретной системы.
idtypeididtype и id
      указывают, какие дочерние процессы ожидать.
     
     | Значение аргумента idtypeравноP_ALL | Функция игнорирует аргумент idи ожидает изменения состояния каждого дочернего процесса. | 
| Значение аргумента idtypeравноP_PID | Функция ожидает изменения состояния дочернего процесса,
          идентификатор которого равен значению аргумента id. | 
| Значение аргумента idtypeравноP_PGID | Функция ожидает изменения состояния каждого дочернего процесса,
          идентификатор группы которого равен значению аргумента id. | 
| Значение аргумента idtypeравноP_PIDFD(с Linux 5.4) | Функция ожидает изменения состояния дочернего процесса, на который ссылается
          PID-идентификатор дескриптора файла, который указали в аргументе id.
          Подробнее о PID-идентификаторе дескриптора файла
          рассказывает man-страница руководства к функцииpidfd_open(2). | 
| Значение аргумента idtypeравноP_UID | Функция ожидает процессы, эффективный идентификатор пользователя которых
          равен значению аргумента id. | 
| Значение аргумента idtypeравноP_GID | Функция ожидает процессы, эффективный идентификатор группы которых
          равен значению аргумента id. | 
| Значение аргумента idtypeравноP_SID | Функция ожидает процессы, идентификатор сессии которых равен значению аргумента id. Идентификатор сессии дочернего процесса
          и идентификатор дочернего процесса совпадут, если дочерний процесс запустил свою сессию,
          иначе идентификатор сессии дочернего процесса совпадёт с идентификатором сессии родительского процесса. | 
| Значение аргумента idtypeравноP_JAILID | Функция ожидает процессы внутри изоляции, чей идентификатор равен значению
          аргумента id. | 
info
      Функция заполнит параметр info массивом,
      который одержит информацию о сигнале.
     
      Массив info содержит следующие ключи:
      
signo: Номер сигналаerrno: Номер системной ошибкиcode: Код сигналаstatus: Значение, которое процесс вернул при выходе, или сигнал,
         который изменил состояние процесса
       pid: Идентификатор процесса, который отправил сигналuid: Реальный идентификатор пользователя процесса, который отправил сигналutime: Время, которое затратил пользовательstime: Время, которое затратила системаflags
      Значение аргумента flags состоит из нуля или большего количества
      следующих констант, которые объединили побитовым оператором ИЛИ:
      
| WCONTINUED | Возвращать статус дочернего процесса, который продолжает работу
           и о статусе которого либо не сообщалось, поскольку процесс продолжился
           после остановки управления заданием, либо сообщалось только через
           вызовы функции pcntl_waitid()
           с флагом WNOWAIT. | 
| WEXITED | Ожидать процессы, которые сообщили о выходе. | 
| WNOHANG | Не зависать, если статус недоступен; немедленно вернуть результат. | 
| WNOWAIT | Сохранять процесс, статус которого возвращается в параметре info,
           в состоянии ожидания. Это не влияет на состояние процесса;
           процесс разрешается ожидать снова после завершения этого вызова. | 
| WSTOPPED | Возвращать статус дочернего процесса,
           который остановился после получения сигнала и статус которого
           либо не сообщался с момента остановки процесса, либо о статусе сообщалось
           только через вызовы функции pcntl_waitid()
           с флагом WNOWAIT. | 
resource_usage
      Функция заполнит переменную resource_usage массивом
      со статистикой потребления ресурсов дочерним процессом.
      Функция заполняет переменную, только если в системах наподобие FreeBSD доступен системный вызов wait6
      или в ОС Linux при доступности прямого системного вызова waitid.
     
   Функция pcntl_waitid() возвращает true,
   если указали флаг WNOHANG и статус недоступен
   ни для одного процесса, который определили аргументами
   idtype и id.
  
   Функция pcntl_waitid() возвращает true
   при изменении состояния дочернего процесса.
  
   В остальных случаях возвращается false, а номер ошибки errno
   получают функцией pcntl_get_last_error().
  
Замечание:
Текстовое описание номера ошибки
errnoполучают функцией pcntl_strerror().
| ECHILD | У родительского процесса нет дочерних процессов, которые бы не ожидала функция. | 
| EINTR | Выполнение функции pcntl_waitid() прервал сигнал. | 
| EINVAL | В аргументе flagsпередали недопустимое значение
       или через аргументыidtypeиidуказали недопустимый набор процессов. | 
| Версия | Описание | 
|---|---|
| 8.5.0 | Добавили параметр resource_usage. | 
