diff --git a/Base/usr/share/man/man2/recvfd.md b/Base/usr/share/man/man2/recvfd.md new file mode 100644 index 0000000000..f7d072b498 --- /dev/null +++ b/Base/usr/share/man/man2/recvfd.md @@ -0,0 +1,33 @@ +## Name + +recvfd - receive a file descriptor from a local socket peer + +## Synopsis + +```**c++ +#include + +int recvfd(int sockfd); +``` + +## Description + +Receive an open file descriptor from a local socket peer connected via `sockfd`. This is a non-blocking call that will fail if there is no file descriptor waiting in the socket's queue. + +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` is not an open file descriptor. +* `ENOTSOCK`: `sockfd` does not refer to a socket. +* `EAFNOSUPPORT`: `sockfd` does not refer to a local domain socket. +* `EINVAL`: `sockfd` does not refer to a connected or accepted socket. +* `EAGAIN`: There is no file descriptor queued on this socket. + +## See also + +* [`sendfd`(2)](sendfd.md) diff --git a/Base/usr/share/man/man2/sendfd.md b/Base/usr/share/man/man2/sendfd.md new file mode 100644 index 0000000000..867d3509ca --- /dev/null +++ b/Base/usr/share/man/man2/sendfd.md @@ -0,0 +1,34 @@ +## Name + +sendfd - send a file descriptor to a local socket peer + +## Synopsis + +```**c++ +#include + +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)