.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) |