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.