Класс EvSignal

(PECL ev >= 0.2.0)

Введение

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

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

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

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

classEvSignalextendsEvWatcher {
public$signum;
public$is_active;
public$data;
public$priority;
public__construct(
    int$signum,
    callable$callback,
    mixed$data = null,
    int$priority = 0
)
finalpublicstaticcreateStopped(
    int$signum,
    callable$callback,
    mixed$data = null,
    int$priority = 0
): EvSignal
publicset(int$signum): void
publicEvWatcher::feed(int$revents): void
publicEvWatcher::invoke(int$revents): void
publicEvWatcher::keepalive(bool$value = ?): bool
}

Свойства

signum

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

Содержание

To Top