Класс EvSignal

(PECL ev >= 0.2.0)

Введение

Наблюдатель EvSignal создает событие когда процесс получает один или несколько конкретных сигналов. Так как сигналы приходят асинхронно, libev старается с этим бороться и доставлять их синхронно, т.е аналогично всем остальным событиям в нормальном режиме обработки.

Ограничений на количество наблюдателей за одним и тем же сигналом нет, но только в пределах одного событийного цикла. Например в цикле по умолчанию работает наблюдатель за SIGINT, а в другом цикле наблюдатель за SIGIO, но при этом нельзя наблюдать за SIGINT в двух циклах сразу. Ну и за SIGCHLD можно наблюдать только в цикле по умолчанию.

Если доступно и поддерживается, libev устанавливает свои обработчики с разрешенным поведением SA_RESTART (или аналогом), поэтому системные вызовы не будут некорректно прерываться. Если будут возникать проблемы с прерыванием системных вызовов сигналами, все сигналы можно блокировать в наблюдателе EvCheck и разблокировать в наблюдателе EvPrepare.

Обзор классов

EvSignal extends EvWatcher {
/* Свойства */
public $signum ;
/* Наследуемые свойства */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* Методы */
public __construct ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static EvSignal createStopped ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void set ( int $signum )
/* Наследуемые методы */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Свойства

signum

Номер сигнала. Смотрите константы экспортированные расширением pcntl. Также смотрите man-страницу signal(7).

Содержание

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top