PHP 8.4.2 Released!

pcntl_sigwaitinfo

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

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

Описание

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() - Ожидает сигналы в течение заданного времени

Добавить

Примечания пользователей 1 note

up
0
dave at mudsite dot com
8 years ago
This function is not available on platforms that do not implement the underlying C function. Included in this would be MaxOS[1], and FreeBSD[2]

[1] : http://opensource.apple.com//source/xnu/xnu-1456.1.26/bsd/sys/signal.h

[2] : http://fxr.watson.org/fxr/source/sys/signal.h?v=FREEBSD11
To Top