pcntl_sigwaitinfo
(PHP 5 >= 5.3.0, PHP 7)
pcntl_sigwaitinfo — Ожидание сигналов
Описание
$set
, array &$siginfo
= ?
) : intФункция pcntl_sigwaitinfo() приостанавливает исполнение вызываемого скрипта до тех пор, пока не будет получен сигнал, указанный в аргументе pcntl_sigwaitinfo(). Если один из сигналов уже в ожидании (т.е. заблокирован функцией pcntl_sigprocmask()), то функция pcntl_sigwaitinfo() незамедлительно вернёт управление.
Список параметров
-
set
-
Массив ожидаемых сигналов.
-
siginfo
-
Аргумент
siginfo
массив, содержащий информацию о сигнале.Следующие ключи массива (аргумента) применимы для всех сигналов
- signo: Номер сигнала
- errno: Номер ошибки
- code: Код сигнала
Следующие элементы массива применимы для сигнала
SIGCHLD
:- status: Статус выхода дочернего процесса или сигнал, заставивший дочерний процесс поменять состояние
- utime: Потреблённое пользовательское время
- stime: Потреблённое системное время
- pid: ID процесса-отправителя
- uid: ID пользователя владеющего процессом-отправителем
Следующие элементы массива применимы для сигналов
SIGILL
,SIGFPE
,SIGSEGV
иSIGBUS
:- addr: Адрес памяти в котором произошёл сбой
Следующие элементы массива применимы для сигнала
SIGPOLL
- band: Cобытие ввода-вывода
- fd: Номер файлового дескриптора
Возвращаемые значения
В случае успешного выполнения функция pcntl_sigwaitinfo() возвращает номер сигнала.
Примеры
Пример #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() - Ожидает сигналы в течение заданного времени