Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


sd_event_get_fd(3) — Linux manual page

NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |EXAMPLES |NOTES |HISTORY |SEE ALSO |COLOPHON

SD_EVENT_GET_FD(3)           sd_event_get_fdSD_EVENT_GET_FD(3)

NAME        top

       sd_event_get_fd - Obtain a file descriptor to poll for event loop       events

SYNOPSIS        top

#include <systemd/sd-event.h>int sd_event_get_fd(sd_event *event);

DESCRIPTION        top

sd_event_get_fd()returns the file descriptor that an event loop       object returned by thesd_event_new(3) function uses to wait for       events. This file descriptor may itself be polled forPOLLIN/EPOLLINevents. This makes it possible to embed ansd-event(3) event loop into another, possibly foreign, event loop.       The returned file descriptor refers to anepoll(7) object. It is       recommended not to alter it by invokingepoll_ctl(2) on it, in       order to avoid interference with the event loop's inner logic and       assumptions.

RETURN VALUE        top

       On success,sd_event_get_fd()returns a non-negative file       descriptor. On failure, it returns a negative errno-style error       code.Errors       Returned errors may indicate the following problems:-EINVALevent is not a valid pointer to an sd_event structure.-ECHILD           The event loop has been created in a different process,           library or module instance.

EXAMPLES        top

Example 1. Integration in the GLib event loop           /* SPDX-License-Identifier: MIT-0 */           #include <stdlib.h>           #include <glib.h>           #include <systemd/sd-event.h>           typedef struct SDEventSource {             GSource source;             GPollFD pollfd;             sd_event *event;           } SDEventSource;           static gboolean event_prepare(GSource *source, gint *timeout_) {             return sd_event_prepare(((SDEventSource *)source)->event) > 0;           }           static gboolean event_check(GSource *source) {             return sd_event_wait(((SDEventSource *)source)->event, 0) > 0;           }           static gboolean event_dispatch(GSource *source, GSourceFunc callback, gpointer user_data) {             return sd_event_dispatch(((SDEventSource *)source)->event) > 0;           }           static void event_finalize(GSource *source) {             sd_event_unref(((SDEventSource *)source)->event);           }           static GSourceFuncs event_funcs = {             .prepare = event_prepare,             .check = event_check,             .dispatch = event_dispatch,             .finalize = event_finalize,           };           GSource *g_sd_event_create_source(sd_event *event) {             SDEventSource *source;             source = (SDEventSource *)g_source_new(&event_funcs, sizeof(SDEventSource));             source->event = sd_event_ref(event);             source->pollfd.fd = sd_event_get_fd(event);             source->pollfd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;             g_source_add_poll((GSource *)source, &source->pollfd);             return (GSource *)source;           }

NOTES        top

       Functions described here are available as a shared library, which       can be compiled against and linked to with thelibsystemd pkg-config(1) file.       The code described here usesgetenv(3), which is declared to be       not multi-thread-safe. This means that the code calling the       functions described here must not callsetenv(3) from a parallel       thread. It is recommended to only do calls tosetenv()from an       early phase of the program when no other threads have been       started.

HISTORY        top

sd_event_get_fd()was added in version 217.

SEE ALSO        top

sd-event(3),sd_event_new(3),sd_event_wait(3),epoll_ctl(2),epoll(7)

COLOPHON        top

       This page is part of thesystemd (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       ⟨http://www.freedesktop.org/wiki/Software/systemd/#bugreports⟩.       This page was obtained from the project's upstream Git repository       ⟨https://github.com/systemd/systemd.git⟩ on 2025-08-11.  (At that       time, the date of the most recent commit that was found in the       repository was 2025-08-11.)  If you discover 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 isnot part of the original manual page), send a mail to       man-pages@man7.orgsystemd 258~rc2SD_EVENT_GET_FD(3)

Pages that refer to this page:sd-event(3)sd_event_run(3)sd_event_wait(3)systemd.directives(7)systemd.index(7)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp