sd_event_add_signal() adds a new UNIX process signal event source to
an event loop. The event loop object is specified in the event
parameter, and the event source object is returned in the source
parameter. The signal parameter specifies the numeric signal to be
handled (see signal(7)). The handler parameter must reference a
function to call when the signal is received 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
signalfd_siginfo structure containing 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 by this call, and must be blocked before
this function is called in all threads (using sigprocmask(2)). If the
handler is not specified (handler is NULL), a default handler which
causes the program to exit cleanly will be used.
By default, the event source 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 the SD_EVENT_ON mode was requested
To destroy an event source object use sd_event_source_unref(3), but
note that the event source is only removed from the event loop when
all references to the event source are dropped. To make sure an event
source does not fire anymore, even if it is still referenced, disable
the event source using sd_event_source_set_enabled(3) with
If the second parameter of sd_event_add_signal() is NULL no reference
to the event source object is returned. In this case the event source
is considered "floating", and will be destroyed implicitly when the
event loop itself is destroyed.
sd_event_source_get_signal() returns the configured signal number of
an event source created previously with sd_event_add_signal(). It
takes the event source object as the source parameter.
Returned errors may indicate the following problems:
Not enough memory to allocate an object.
An invalid argument has been passed.
A handler is already installed for this signal or the signal was
not blocked previously.
The event loop is already terminated.
The event loop has been created in a different process.
The passed event source is not a signal event source.
This page is part of the systemd (systemd system and service manager)
project. Information about the project can be found at
⟨http://www.freedesktop.org/wiki/Software/systemd⟩. If you have a bug
report for this manual page, see
page was obtained from the project's upstream Git repository
⟨https://github.com/systemd/systemd.git⟩ on 2017-03-13. If you dis‐
cover any rendering problems in this HTML version of the page, or you
believe there is a better or more up-to-date source for the page, or
you have corrections or improvements to the information in this
COLOPHON (which is not part of the original manual page), send a mail
systemd 233 SD_EVENT_ADD_SIGNAL(3)