sd_listen_fds.xml revision cb07866b1b7c11e687a322d70dd9f9d73bbbe488
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt This file is part of systemd.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt Copyright 2010 Lennart Poettering
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt systemd is free software; you can redistribute it and/or modify it
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt under the terms of the GNU Lesser General Public License as published by
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt the Free Software Foundation; either version 2.1 of the License, or
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt (at your option) any later version.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt systemd is distributed in the hope that it will be useful, but
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt WITHOUT ANY WARRANTY; without even the implied warranty of
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt Lesser General Public License for more details.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt You should have received a copy of the GNU Lesser General Public License
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt along with systemd; If not, see <http://www.gnu.org/licenses/>.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <refentryinfo>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <authorgroup>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt </authorgroup>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt </refentryinfo>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <refnamediv>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <refpurpose>Check for file descriptors passed by the init system.</refpurpose>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt </refnamediv>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <refsynopsisdiv>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <funcsynopsis>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <funcsynopsisinfo>#include <systemd/sd-daemon.h></funcsynopsisinfo>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <funcsynopsisinfo>#define SD_LISTEN_FDS_START 3</funcsynopsisinfo>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <funcprototype>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <funcdef>int <function>sd_listen_fds</function></funcdef>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <paramdef>int <parameter>unset_environment</parameter></paramdef>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt </funcprototype>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt </funcsynopsis>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt </refsynopsisdiv>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <para><function>sd_listen_fds()</function> shall be
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt called by a daemon to check for file descriptors
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt passed by the init system as part of the socket-based
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt activation logic.</para>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <para>If the <parameter>unset_environment</parameter>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt parameter is non-zero
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <function>sd_listen_fds()</function> will unset the
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <varname>$LISTEN_FDS</varname>/<varname>$LISTEN_PID</varname>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt environment variables before returning (regardless
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt whether the function call itself succeeded or
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt not). Further calls to
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <function>sd_listen_fds()</function> will then fail,
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt but the variables are no longer inherited by child
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt processes.</para>
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <para>If a daemon receives more than one file
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt descriptor, they will be passed in the same order as
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt configured in the systemd socket definition
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file. Nonetheless it is recommended to verify the
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt correct socket types before using them. To simplify
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt this checking the functions
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt <citerefentry><refentrytitle>sd_is_fifo</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_is_socket_inet</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_is_socket_unix</refentrytitle><manvolnum>3</manvolnum></citerefentry>
without allowing incorrect setups. i.e. often the
<citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
<citerefentry><refentrytitle>sd_is_socket_inet</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_is_socket_unix</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,