sd_event_add_signal, sd_event_source_get_signal — Add a signal event source to an event loop
#include <systemd/sd-bus.h>
int sd_event_add_signal( | sd_event *event, |
| sd_event_source **source, | |
| int signal, | |
| sd_event_signal_handler_t handler, | |
void *userdata); |
typedef int (*sd_event_signal_handler_t)( | sd_event_source *s, |
| const struct signalfd_siginfo *si, | |
void *userdata); |
int sd_event_source_get_signal( | sd_event_source *source); |
sd_event_add_signal() adds a new signal
event source to an event loop object. The event loop is specified
in event, the event source is returned in
the source parameter. The
signal parameter specifies the signal to be handled
(see
signal(7)).
The handler must reference a function to
call when the signal is delivered or be NULL.
The handler function will be passed the
userdata pointer, which may be chosen
freely by the caller. The handler also receives a pointer to a
const struct signalfd_siginfo containing
the information about the received signal. See
signalfd(2)
for further information.
Only a single handler may be installed for a specific
signal. The signal will be unblocked, and must be
blocked when the function is called. If the handler is not
specified (handler is
NULL), a default handler which causes the
program to exit will be used. By default, the handler is enabled
permanently (SD_EVENT_ON), but this may be
changed with
sd_event_source_set_enabled(3).
If the handler function returns a negative error code, it will be
disabled after the invocation, even if
SD_EVENT_ON mode is set.
sd_event_source_get_signal() retrieves
the configured signal number of a signal event source created
previously with sd_event_add_signal(). It
takes the event source object as the source
parameter.
On success, these functions return 0 or a positive integer. On failure, they return a negative errno-style error code.
sd_event_add_signal() and the other functions
described here are available as a shared library, which can be
compiled and linked to with the
libsystemd pkg-config(1)
file.