# Класс EvSignal

(PECL ev >= 0.2.0)

## Введение

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

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

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

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

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

## Свойства

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

## Содержание

- EvSignal::__construct — Создаёт объект наблюдателя EvSignal
- EvSignal::createStopped — Создаёт остановленный объект наблюдателя EvSignal
- EvSignal::set — Настройка наблюдателя

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open