pcntl_sigwaitinfo

(PHP 5 >= 5.3.0, PHP 7)

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

Описание

int pcntl_sigwaitinfo ( array $set [, array &$siginfo ] )

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

add a note add a note

User Contributed Notes 1 note

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