array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'class.evsignal.php', 1 => 'EvSignal', ), 'up' => array ( 0 => 'book.ev.php', 1 => 'Ev', ), 'prev' => array ( 0 => 'evprepare.createstopped.php', 1 => 'EvPrepare::createStopped', ), 'next' => array ( 0 => 'evsignal.construct.php', 1 => 'EvSignal::__construct', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/ev/evsignal.xml', ), 'extra_header_links' => array ( 'rel' => 'alternate', 'href' => '/manual/en/feeds/class.evsignal.atom', 'type' => 'application/atom+xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL ev >= 0.2.0)
Наблюдатель EvSignal создаёт событие когда процесс получает один или несколько конкретных сигналов. Так как сигналы приходят асинхронно, libev старается с этим бороться и доставлять их синхронно, т.е аналогично всем остальным событиям в нормальном режиме обработки.
Ограничений на количество наблюдателей за одним и тем же сигналом нет, но
только в пределах одного событийного цикла. Например, в цикле по умолчанию
работает наблюдатель за SIGINT
, а в другом цикле
наблюдатель за SIGIO
, но при этом нельзя
наблюдать за SIGINT
в двух циклах сразу. Ну и за
SIGCHLD
можно наблюдать только в цикле по умолчанию.
Если доступно и поддерживается, libev
устанавливает свои обработчики с разрешённым поведением
SA_RESTART
(или аналогом), поэтому системные вызовы
не будут некорректно прерываться. Если будут возникать проблемы с прерыванием
системных вызовов сигналами, все сигналы можно блокировать в
наблюдателе EvCheck и разблокировать в
наблюдателе EvPrepare.
$signum
,$callback
,$data
= null
,$priority
= 0
Номер сигнала. Смотрите константы, экспортированные модулем pcntl.
Также смотрите страницу руководства signal(7)
.