socketpair(2) - Linux man page
Name
socketpair - create a pair of connected socketsSynopsis
#include <sys/types.h> /* See NOTES */#include <sys/socket.h>
int socketpair(int domain, int type, int protocolint " sv [2]);
Description
The descriptors used in referencing the new sockets are returned in sv[0] and sv[1]. The two sockets are indistinguishable.
Return Value
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.Errors
- EAFNOSUPPORT
- The specified address family is not supported on this machine.
- EFAULT
- The address sv does not specify a valid part of the process address space.
- EMFILE
- Too many descriptors are in use by this process.
- ENFILE
- The system limit on the total number of open files has been reached.
- EOPNOTSUPP
- The specified protocol does not support creation of socket pairs.
- EPROTONOSUPPORT
- The specified protocol is not supported on this machine.
Conforming to
4.4BSD, POSIX.1-2001. The socketpair() function call appeared in 4.2BSD. It is generally portable to/from non-BSD systems supporting clones of the BSD socket layer (including System V variants).Notes
On Linux, the only supported domain for this call is AF_UNIX (or synonymously, AF_LOCAL). (Most implementations have the same restriction.)Since Linux 2.6.27, socketpair() supports the SOCK_NONBLOCK and SOCK_CLOEXEC flags described in socket(2).
POSIX.1-2001 does not require the inclusion of <sys/types.h>, and this header file is not required on Linux. However, some historical (BSD) implementations required this header file, and portable applications are probably wise to include it.
