CakeFest 2024: The Official CakePHP Conference

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, если возникла ошибка.

Примеры

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

add a note

User Contributed Notes 1 note

up
0
dave at mudsite dot com
7 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