sd_event_run, sd_event_loop — Run libsystemd event loop
#include <systemd/sd-event.h>
int sd_event_run( | sd_event *event, |
uint64_t timeout) ; |
int sd_event_loop( | sd_event *event) ; |
sd_event_run()
can be used to run one
iteration of the event loop of libsystemd. This function waits
until an event to process is available and dispatches a handler
for it. Parameter timeout
specifices the
maximum time (in microseconds) to wait. (uint64_t)
-1
may be used to specify an infinite timeout.
sd_event_loop
runs
sd_event_wait
in a loop with a timeout of
infinity. This makes it suitable for the main event loop of a
program.
The event loop object event
is
created with
sd_event_new
.
Events to wait for and their handlers can be registered with
sd_event_add_time
,
sd_event_add_child
,
sd_event_add_signal
,
sd_event_add_defer
,
sd_event_add_exit
,
and
sd_event_add_post
.
For more fine-grained control,
sd_event_prepare
,
sd_event_wait
, and
sd_event_dispatch
may be used. Along with
sd_event_get_fd
, those functions make it
possible to integrate the libsystemd loop inside of another event
loop.
On success, these functions return 0 or a positive integer.
On failure, they return a negative errno-style error code.
sd_event_run
returns 0 if the event loop is
finished, and a positive value if it can be continued.
Returned errors may indicate the following problems:
-EINVAL
¶Parameter event
is
NULL
.
-EBUSY
¶The event loop object is not in the right state (see sd_event_prepare(3) for an explanation of possible states).
-ESTALE
¶The event loop is already terminated.
-ECHILD
¶The event loop has been created in a different process.
Other errors are possible too.
sd_event_run()
and
sd_event_loop()
are available
as a shared library, which can be compiled and linked to with the
libsystemd
pkg-config(1)
file.