sd_event_run man page

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.

Return Value

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:

Parameter event is NULL.
The event loop object is not in the right state (see sd_event_prepare(3) for an explanation of possible states).
The event loop is already terminated.
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.

See Also

systemd(1), sd_event_new(3), sd_event_wait(3), sd_event_add_io(3), sd_event_add_time(3), sd_event_add_signal(3), sd_event_add_defer(3), sd_event_add_exit(3), sd_event_add_post(3), GLIb Main Event Loop.

Referenced By

sd-event(3), sd_event_exit(3), sd_event_set_name(3), sd_event_wait(3), systemd.directives(7), systemd.index(7).

Explore man page connections for sd_event_run(3).

sd_event_loop(3) is an alias of sd_event_run(3).