# sd_is_fifo

## NAME



           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
    


## SYNOPSIS



           **#include <systemd/sd-daemon.h>**
    
           **int sd_is_fifo(int** _fd_**, const char ***_path_**);**
    
           **int sd_is_socket(int** _fd_**, int** _family_**, int** _type_**, int** _listening_**);**
    
           **int sd_is_socket_inet(int** _fd_**, int** _family_**, int** _type_**, int** _listening_**,**
                                 **uint16_t** _port_**);**
    
           **int sd_is_socket_sockaddr(int** _fd_**, int** _type_**,**
                                     **const struct sockaddr ***_addr_**,**
                                     **unsigned** _addr_len_**, int** _listening_**);**
    
           **int sd_is_socket_unix(int** _fd_**, int** _type_**, int** _listening_**,**
                                 **const char ***_path_**, size_t** _length_**);**
    
           **int sd_is_mq(int** _fd_**, const char ***_path_**);**
    
           **int sd_is_special(int** _fd_**, const char ***_path_**);**
    


## DESCRIPTION



           **sd_is_fifo()** may be called to check whether the specified file
           descriptor refers to a FIFO or pipe. If the _path_ parameter is not
           **NULL** , 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 the _family_ parameter is not
           **AF_UNSPEC** , it is checked whether the socket is of the specified
           family (**AF_UNIX** , **AF_INET** , ...). If the _type_ parameter is not 0, it
           is checked whether the socket is of the specified type
           (**SOCK_STREAM** , **SOCK_DGRAM** , ...). If the _listening_ parameter is
           positive, it is checked whether the socket is in accepting mode,
           i.e.  **listen()** has been called for it. If _listening_ is 0, it is
           checked whether the socket is not in this mode. If the parameter
           is negative, no such check is made. The _listening_ parameter should
           only be used for stream sockets and should be set to a negative
           value otherwise.
    
           **sd_is_socket_inet()** is similar to **sd_is_socket()** , but optionally
           checks the IPv4 or IPv6 port number the socket is bound to, unless
           _port_ is zero. For this call _family_ must be passed as either
           **AF_UNSPEC** , **AF_INET** , or **AF_INET6**.
    
           **sd_is_socket_sockaddr()** is similar to **sd_is_socket_inet()** , but
           checks if the socket is bound to the address specified by _addr_.
           The _family_ specified by _addr_ must be either **AF_INET** or **AF_INET6**
           and _addr_len_ must be large enough for that family. If _addr_
           specifies a non-zero port, it is also checked if the socket is
           bound to this port. In addition, for IPv6, if _addr_ specifies
           non-zero _sin6_flowinfo_ or _sin6_scope_id_ , it is checked if the
           socket has the same values.
    
           **sd_is_socket_unix()** is similar to **sd_is_socket()** but optionally
           checks the **AF_UNIX** path the socket is bound to, unless the _path_
           parameter is **NULL**. For normal file system **AF_UNIX** sockets, set the
           _length_ parameter to 0. For Linux abstract namespace sockets, set
           the _length_ to the size of the address, including the initial 0
           byte, and set the _path_ 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 the _path_ parameter
           is not **NULL** , 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 the _path_ parameter is not
           **NULL** , 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/.
    


## RETURN VALUE



           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.
    


## NOTES



           Functions described here are available as a shared library, which
           can be compiled against and linked to with the
           **libsystemd pkg-config**(1) file.
    
           Internally, these functions use a combination of fstat(2) and
           getsockname(2) to check the file descriptor type and where it is
           bound to.
    


* * *