| .TH SENDFD 3 |
| .SH NAME |
| sendfd, recvfd \- pass file descriptors along Unix domain sockets |
| .SH SYNOPSIS |
| .B |
| #include <u.h> |
| .PP |
| .B |
| #include <libc.h> |
| .PP |
| .B |
| int sendfd(int socket, int fd) |
| .PP |
| .B |
| int recvfd(int socket) |
| .SH DESCRIPTION |
| .I Recvfd |
| and |
| .I sendfd |
| can be used to pass an open file descriptor over |
| a Unix domain socket from one process to another. |
| Since |
| .IR pipe (3) |
| is implemented with |
| .IR socketpair (2) |
| instead of |
| .IR pipe (2), |
| .I socket |
| can be a file descriptor obtained from |
| .IR pipe (3). |
| .PP |
| .I Sendfd |
| sends the file descriptor |
| .I fd |
| along the socket to a process calling |
| .I recvfd |
| on the other end. |
| .PP |
| It is assumed that the two sides have coordinated |
| and agreed to transfer a file descriptor already, so |
| that the |
| .I sendfd |
| is met with a |
| .I recvfd |
| instead of an ordinary |
| .IR read . |
| .PP |
| The file descriptor number may change on its way |
| between processes, but the kernel structure it represents |
| will not. |
| .SH SOURCE |
| .B \*9/src/lib9/sendfd.c |
| .SH SEE ALSO |
| .IR socketpair (2), |
| .I sendmsg |
| in |
| .IR send (2) |