sd_event_add_signal
systemd
More text
Zbigniew
Jędrzejewski-Szmek
zbyszek@in.waw.pl
sd_event_add_signal
3
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
Description
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
signal7).
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
signalfd2
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_enabled3.
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.
Return Value
On success, these functions return 0 or a positive
integer. On failure, they return a negative errno-style error
code.
Errors
Returned errors may indicate the following problems:
-ENOMEM
Not enough memory to allocate an object.
-EINVAL
An invalid argument has been passed.
-EBUSY
An handler is already installed for this
signal or the signal was not blocked previously.
-ESTALE
The event loop is already terminated.
-ECHILD
The event loop has been created in a different process.
Notes
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-config1
file.
See Also
systemd1,
sd-event3,
sd_event_new3,
sd_event_add_time3,
sd_event_add_child3,
sd_event_add_defer3,
sd_event_source_set_enabled3