Ожидание сигналов

# pcntl_sigwaitinfo

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

pcntl_sigwaitinfo — Ожидание сигналов

### Описание

function pcntl_sigwaitinfo(array `$signals`, array `&$info` = []): int|false

Функция pcntl_sigwaitinfo() приостанавливает выполнение вызывающего скрипта до тех пор, пока не будет доставлен один из сигналов, указанных в `signals`. Если один из сигналов уже ожидает обработки (например, заблокирован pcntl_sigprocmask()),pcntl_sigwaitinfo() незамедлительно вернёт управление.

### Список параметров

`signals`

  Массив ожидаемых сигналов.

`info`

  Аргумент `info` массив, содержащий информацию о сигнале.

  Следующие ключи массива (аргумента) применимы для всех сигналов

  - signo: Номер сигнала
  - errno: Номер ошибки
  - code: Код сигнала

  Следующие элементы массива применимы для сигнала `SIGCHLD`:

  - status: Статус выхода дочернего процесса или сигнал, заставивший дочерний процесс поменять состояние
  - utime: Потреблённое пользовательское время
  - stime: Потреблённое системное время
  - pid: ID процесса-отправителя
  - uid: ID пользователя владеющего процессом-отправителем

  Следующие элементы массива применимы для сигналов `SIGILL`, `SIGFPE`, `SIGSEGV` и `SIGBUS`:

  - addr: Адрес памяти в котором произошёл сбой

  Следующие элементы массива применимы для сигнала `SIGPOLL`

  - band: Событие ввода-вывода
  - fd: Номер файлового дескриптора

### Возвращаемые значения

В случае успешного выполнения функция pcntl_sigwaitinfo() возвращает номер сигнала или `false`, если возникла ошибка.

### Список изменений

Версия | Описание
--- | ---
8.4.0 | Если значение параметра `signal` не задано, выбрасывается ошибка ValueError.
8.4.0 | Если значение параметра `signal` не целое число (int), выбрасывается ошибка ValueError.
8.4.0 | Если значение параметра `signal` некорректно, выбрасывается ошибка ValueError.

### Примеры

Пример #1 Пример использования pcntl_sigwaitinfo()

    <?php
    echo "Блокировка сигнала SIGHUP\n";
    pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));

    echo "Отправка сигнала SIGHUP самому себе\n";
    posix_kill(posix_getpid(), SIGHUP);

    echo "Ожидание сигналов\n";
    $info = array();
    pcntl_sigwaitinfo(array(SIGHUP), $info);
    ?>

### Смотрите также

- pcntl_sigprocmask() - Задаёт и извлекает список блокируемых сигналов
- pcntl_sigtimedwait() - Ожидает сигналы в течение заданного времени

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open