Signal — Signal watcher

class Signal(signum, loop, callback[, data=None, priority=0])
Parameters:
  • signum (int) – the signal number to monitor.
  • loop (Loop) – loop object responsible for this watcher (accessible through loop).
  • callback (callable) – see callback.
  • data (object) – any Python object you might want to attach to the watcher (stored in data).
  • priority (int) – see priority.

Signal watchers will trigger an event when the process receives a specific signal one or more times. Even though signals are very asynchronous, libev will try its best to deliver signals synchronously, i.e. as part of the normal event processing, like any other event.

You can configure as many watchers as you like for the same signal, but only within the same loop, i.e. you can watch for SIGINT in your default loop and for SIGIO in another loop, but you cannot watch for SIGINT in both the default loop and another loop at the same time. At the moment, SIGCHLD is permanently tied to the default loop. Only after the first watcher for a signal is started will libev actually register something with the kernel. It thus coexists with your own signal handlers as long as you don’t register any with libev for the same signal.

If possible and supported, libev will install its handlers with SA_RESTART (or equivalent) behaviour enabled, so system calls should not be unduly interrupted. If you have a problem with system calls getting interrupted by signals you can block all signals in a Check watcher and unblock them in a Prepare watcher.

set(signum)
Parameters:signum (int) – the signal number to monitor.

Reconfigures the watcher.

signum

Read only

The signal number being monitored.