|
@@ -0,0 +1,34 @@
|
|
|
|
+## Name
|
|
|
|
+
|
|
|
|
+sendfd - send a file descriptor to a local socket peer
|
|
|
|
+
|
|
|
|
+## Synopsis
|
|
|
|
+
|
|
|
|
+```**c++
|
|
|
|
+#include <sys/socket.h>
|
|
|
|
+
|
|
|
|
+int sendfd(int sockfd, int fd);
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+## Description
|
|
|
|
+
|
|
|
|
+Send an open file descriptor to a local socket peer connected via `sockfd`. This is a non-blocking call that will fail if there are too many file descriptors already waiting to be received by the peer.
|
|
|
|
+
|
|
|
|
+File descriptors are sent out-of-band and do not affect the regular data streams.
|
|
|
|
+
|
|
|
|
+## Return value
|
|
|
|
+
|
|
|
|
+If a file descriptor is successfully received, it is returned as a positive integer. Otherwise, -1 is returned and `errno` is set to indicate the error.
|
|
|
|
+
|
|
|
|
+## Errors
|
|
|
|
+
|
|
|
|
+* `EBADF`: `sockfd` or `fd` is not an open file descriptor.
|
|
|
|
+* `ENOTSOCK`: `sockfd` does not refer to a socket.
|
|
|
|
+* `EAFNOSUPPORT`: `sockfd` does not refer to a local domain socket.
|
|
|
|
+* `ENOTCONN`: `sockfd` refers to a socket which is not connected.
|
|
|
|
+* `EINVAL`: `sockfd` does not refer to a connected or accepted socket.
|
|
|
|
+* `EBUSY`: There are too many file descriptors already waiting to be received by the peer.
|
|
|
|
+
|
|
|
|
+## See also
|
|
|
|
+
|
|
|
|
+* [`recvfd`(2)](recvfd.md)
|