Systemd/man/sd_is_fifo.xml

220 lines
11 KiB
XML
Raw Normal View History

2010-06-23 00:31:54 +02:00
<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
This file is part of systemd.
Copyright 2010 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
2010-06-23 00:31:54 +02:00
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
2010-06-23 00:31:54 +02:00
You should have received a copy of the GNU Lesser General Public License
2010-06-23 00:31:54 +02:00
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_is_fifo">
<refentryinfo>
<title>sd_is_fifo</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_is_fifo</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_is_fifo</refname>
<refname>sd_is_socket</refname>
<refname>sd_is_socket_inet</refname>
<refname>sd_is_socket_unix</refname>
2011-05-17 19:37:03 +02:00
<refname>sd_is_mq</refname>
2010-06-23 00:31:54 +02:00
<refpurpose>Check the type of a file descriptor</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-daemon.h&gt;</funcsynopsisinfo>
2010-06-23 00:31:54 +02:00
<funcprototype>
<funcdef>int <function>sd_is_fifo</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>const char *<parameter>path</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_is_socket</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>family</parameter></paramdef>
<paramdef>int <parameter>type</parameter></paramdef>
<paramdef>int <parameter>listening</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_is_socket_inet</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>family</parameter></paramdef>
<paramdef>int <parameter>type</parameter></paramdef>
<paramdef>int <parameter>listening</parameter></paramdef>
<paramdef>uint16_t <parameter>port</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_is_socket_unix</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>type</parameter></paramdef>
<paramdef>int <parameter>listening</parameter></paramdef>
<paramdef>const char* <parameter>path</parameter></paramdef>
<paramdef>size_t <parameter>length</parameter></paramdef>
</funcprototype>
2011-05-17 19:37:03 +02:00
<funcprototype>
<funcdef>int <function>sd_is_mq</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>const char *<parameter>path</parameter></paramdef>
</funcprototype>
2010-06-23 00:31:54 +02:00
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_is_fifo()</function> may be called
to check whether the specified file descriptor refers
2010-06-25 00:04:29 +02:00
to a FIFO or pipe. If the <parameter>path</parameter>
2013-06-29 18:09:14 +02:00
parameter is not <constant>NULL</constant>, it is
checked whether the FIFO is bound to the specified
file system path.</para>
2010-06-23 00:31:54 +02:00
<para><function>sd_is_socket()</function> may be
called to check whether the specified file descriptor
refers to a socket. If the
2010-06-23 00:31:54 +02:00
<parameter>family</parameter> parameter is not
<constant>AF_UNSPEC</constant>, it is checked whether
the socket is of the specified family (AF_UNIX,
<constant>AF_INET</constant>, ...). If the
<parameter>type</parameter> parameter is not 0, it is
2010-06-23 00:31:54 +02:00
checked whether the socket is of the specified type
(<constant>SOCK_STREAM</constant>,
<constant>SOCK_DGRAM</constant>, ...). If the
<parameter>listening</parameter> parameter is positive,
2010-06-23 00:31:54 +02:00
it is checked whether the socket is in accepting mode,
i.e. <function>listen()</function> has been called for
it. If <parameter>listening</parameter> is 0, it is
checked whether the socket is not in this mode. If the
parameter is negative, no such check is made. The
<parameter>listening</parameter> parameter should only
be used for stream sockets and should be set to a
negative value otherwise.</para>
<para><function>sd_is_socket_inet()</function> is
similar to <function>sd_is_socket()</function>, but
optionally checks the IPv4 or IPv6 port number the
socket is bound to, unless <parameter>port</parameter>
is zero. For this call <parameter>family</parameter>
must be passed as either <constant>AF_UNSPEC</constant>, <constant>AF_INET</constant>, or
<constant>AF_INET6</constant>.</para>
2010-06-23 00:31:54 +02:00
<para><function>sd_is_socket_unix()</function> is
similar to <function>sd_is_socket()</function> but
optionally checks the <constant>AF_UNIX</constant> path the socket is bound
2010-06-23 00:31:54 +02:00
to, unless the <parameter>path</parameter> parameter
is <constant>NULL</constant>. For normal file system <constant>AF_UNIX</constant> sockets,
set the <parameter>length</parameter> parameter to 0. For
Linux abstract namespace sockets, set the
2010-06-23 00:31:54 +02:00
<parameter>length</parameter> to the size of the
address, including the initial 0 byte, and set the
2010-06-23 00:31:54 +02:00
<parameter>path</parameter> to the initial 0 byte of
the socket address.</para>
2011-05-17 19:37:03 +02:00
<para><function>sd_is_mq()</function> may be called to
check whether the specified file descriptor refers to
a POSIX message queue. If the
2013-06-29 18:09:14 +02:00
<parameter>path</parameter> parameter is not
<constant>NULL</constant>, it is checked whether the
message queue is bound to the specified name.</para>
2010-06-23 00:31:54 +02:00
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On failure, these calls return a negative
errno-style error code. If the file descriptor is of
the specified type and bound to the specified address,
2010-06-23 00:31:54 +02:00
a positive return value is returned, otherwise
zero.</para>
</refsect1>
<refsect1>
<title>Notes</title>
<para>These functions are provided by the reference
implementation of APIs for new-style daemons and
distributed with the systemd package. The algorithms
they implement are simple, and they can easily be
2010-06-23 00:31:54 +02:00
reimplemented in daemons if it is important to support
this interface without using the reference
implementation.</para>
<para>Internally, these function use a combination of
<filename>fstat()</filename> and
<filename>getsockname()</filename> to check the file
descriptor type and where it is bound to.</para>
<para>For details about the algorithms, check the
2010-06-23 00:31:54 +02:00
liberally licensed reference implementation sources:
<ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-daemon/sd-daemon.c"/>
and <ulink
2012-02-13 17:46:46 +01:00
url="http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-daemon.h"/></para>
2010-06-23 00:31:54 +02:00
<para><function>sd_is_fifo()</function> and the
related functions are implemented in the reference
implementation's <filename>sd-daemon.c</filename> and
<filename>sd-daemon.h</filename> files. These
interfaces are available as shared library, which can
be compiled and linked to with the
<constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
file. Alternatively, applications consuming these APIs
may copy the implementation into their source
tree. For more details about the reference
implementation see
<citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
2010-06-23 00:31:54 +02:00
<para>These functions continue to work as described,
even if -DDISABLE_SYSTEMD is set during
compilation.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
2010-06-24 00:11:04 +02:00
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
2010-06-23 00:31:54 +02:00
<citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>
2010-06-25 00:04:29 +02:00
</para>
2010-06-23 00:31:54 +02:00
</refsect1>
</refentry>