SD_EVENT_RUN(3)

NAME
sd_event_run, sd_event_loop - Run libsystemd event loop

SYNOPSIS

#include <systemd/sd-event.h>

int sd_event_run(sd_event *event, uint64_t timeout);

int sd_event_loop(sd_event *event);

DESCRIPTION

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.

ERRORS

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.

NOTES

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[1].

NOTES

1.  GLIb Main Event Loop
    https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html