X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=man%2Fsd_listen_fds.xml;h=4377745634195611b0461d3878cf7cd20d5b98d5;hp=240300dcb0adfe90d5c3b35ad9d3b56a3862879a;hb=92ff080be100aff15f292e2631921131c610afe7;hpb=79640424059328268b9fb6c5fa8eb777b27a177e diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml index 240300dcb..437774563 100644 --- a/man/sd_listen_fds.xml +++ b/man/sd_listen_fds.xml @@ -21,7 +21,8 @@ along with systemd; If not, see . --> - + sd_listen_fds @@ -72,8 +73,8 @@ If the unset_environment parameter is non-zero, sd_listen_fds() will unset the - $LISTEN_FDS/$LISTEN_PID - environment variables before returning (regardless + $LISTEN_FDS and $LISTEN_PID + environment variables before returning (regardless of whether the function call itself succeeded or not). Further calls to sd_listen_fds() will then fail, @@ -82,10 +83,11 @@ If a daemon receives more than one file descriptor, they will be passed in the same order as - configured in the systemd socket definition - file. Nonetheless, it is recommended to verify the - correct socket types before using them. To simplify - this checking, the functions + configured in the systemd socket unit file (see + systemd.socket5 + for details). Nonetheless, it is recommended to verify + the correct socket types before using them. To + simplify this checking, the functions sd_is_fifo3, sd_is_socket3, sd_is_socket_inet3, @@ -102,6 +104,16 @@ This function call will set the FD_CLOEXEC flag for all passed file descriptors to avoid further inheritance to children of the calling process. + + If multiple socket units activate the same + service the order of the file descriptors passed to + its main process is undefined. If additional file + descriptors have been passed to the service manager + using + sd_pid_notify_with_fds3's + FDSTORE=1 messages, these file + descriptors are passed last, in arbitrary order, and + with duplicates removed. @@ -121,13 +133,7 @@ Notes - This function is provided by the reference - implementation of APIs for new-style daemons and - distributed with the systemd package. The algorithm it - implements is simple, and can easily be reimplemented - in daemons if it is important to support this - interface without using the reference - implementation. + Internally, this function checks whether the $LISTEN_PID environment variable @@ -138,30 +144,6 @@ number of file descriptors starting from SD_LISTEN_FDS_START. Finally, it returns the parsed number. - - For details about the algorithm check the - liberally licensed reference implementation sources: - - and - - sd_listen_fds() is - implemented in the reference implementation's - sd-daemon.c and - sd-daemon.h files. These - interfaces are available as shared library, which can - be compiled and linked to with the - libsystemd-daemon pkg-config1 - file. Alternatively, applications consuming these APIs - may copy the implementation into their source - tree. For more details about the reference - implementation see - sd-daemon3. - - If the reference implementation is used as - drop-in files and -DDISABLE_SYSTEMD is set during - compilation, this function will always return 0 and - otherwise become a NOP.