NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |NOTES |HISTORY |SEE ALSO |COLOPHON | |
SD_IS_FIFO(3) sd_is_fifoSD_IS_FIFO(3)sd_is_fifo, sd_is_socket, sd_is_socket_inet, sd_is_socket_unix, sd_is_socket_sockaddr, sd_is_mq, sd_is_special - Check the type of a file descriptor
#include <systemd/sd-daemon.h>int sd_is_fifo(intfd, const char *path);int sd_is_socket(intfd, intfamily, inttype, intlistening);int sd_is_socket_inet(intfd, intfamily, inttype, intlistening,uint16_tport);int sd_is_socket_sockaddr(intfd, inttype,const struct sockaddr *addr,unsignedaddr_len, intlistening);int sd_is_socket_unix(intfd, inttype, intlistening,const char *path, size_tlength);int sd_is_mq(intfd, const char *path);int sd_is_special(intfd, const char *path);
sd_is_fifo()may be called to check whether the specified file descriptor refers to a FIFO or pipe. If thepath parameter is notNULL, it is checked whether the FIFO is bound to the specified file system path.sd_is_socket()may be called to check whether the specified file descriptor refers to a socket. If thefamily parameter is notAF_UNSPEC, it is checked whether the socket is of the specified family (AF_UNIX,AF_INET, ...). If thetype parameter is not 0, it is checked whether the socket is of the specified type (SOCK_STREAM,SOCK_DGRAM, ...). If thelistening parameter is positive, it is checked whether the socket is in accepting mode, i.e.listen()has been called for it. Iflistening is 0, it is checked whether the socket is not in this mode. If the parameter is negative, no such check is made. Thelistening parameter should only be used for stream sockets and should be set to a negative value otherwise.sd_is_socket_inet()is similar tosd_is_socket(), but optionally checks the IPv4 or IPv6 port number the socket is bound to, unlessport is zero. For this callfamily must be passed as eitherAF_UNSPEC,AF_INET, orAF_INET6.sd_is_socket_sockaddr()is similar tosd_is_socket_inet(), but checks if the socket is bound to the address specified byaddr. Thefamily specified byaddr must be eitherAF_INETorAF_INET6 andaddr_len must be large enough for that family. Ifaddr specifies a non-zero port, it is also checked if the socket is bound to this port. In addition, for IPv6, ifaddr specifies non-zerosin6_flowinfo orsin6_scope_id, it is checked if the socket has the same values.sd_is_socket_unix()is similar tosd_is_socket()but optionally checks theAF_UNIXpath the socket is bound to, unless thepath parameter isNULL. For normal file systemAF_UNIXsockets, set thelength parameter to 0. For Linux abstract namespace sockets, set thelength to the size of the address, including the initial 0 byte, and set thepath to the initial 0 byte of the socket address.sd_is_mq()may be called to check whether the specified file descriptor refers to a POSIX message queue. If thepath parameter is notNULL, it is checked whether the message queue is bound to the specified name.sd_is_special()may be called to check whether the specified file descriptor refers to a special file. If thepath parameter is notNULL, it is checked whether the file descriptor is bound to the specified filename. Special files in this context are character device nodes and files in /proc/ or /sys/.
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, a positive return value is returned, otherwise zero.
Functions described here are available as a shared library, which can be compiled against and linked to with thelibsystemd pkg-config(1) file. Internally, these functions use a combination offstat(2) andgetsockname(2) to check the file descriptor type and where it is bound to.
sd_is_special()was added in version 209.sd_is_socket_sockaddr()was added in version 233.
systemd(1),sd-daemon(3),sd_listen_fds(3),systemd.service(5),systemd.socket(5),ip(7),ipv6(7),unix(7),fifo(7),mq_overview(7),socket(7).
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_IS_FIFO(3)Pages that refer to this page:sd-daemon(3), sd_listen_fds(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. | ![]() |