| SOCKETPAIR(2) | System Calls Manual | SOCKETPAIR(2) |
socketpair —
create a pair of connected sockets
Standard C Library (libc, -lc)
#include
<sys/socket.h>
int
socketpair(int
d, int type,
int protocol,
int *sv);
The
socketpair()
call creates an unnamed pair of connected sockets in the specified domain
d, of the specified type, and
using the optionally specified protocol. The
descriptors used in referencing the new sockets are returned in
sv[0] and
sv[1]. The two sockets are
indistinguishable.
Possible values for the type argument are
SOCK_STREAM, SOCK_DGRAM, and
SOCK_SEQPACKET; the only supported value for the
protocol is 0, which will let the system select an
appropriate protocol for the requested socket
type.
Any combination of the following flags may additionally be used in the type argument:
SOCK_CLOEXECSOCK_CLOFORKSOCK_NONBLOCKUpon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
The call succeeds unless:
EAFNOSUPPORT]EFAULT]EMFILE]ENFILE]EOPNOTSUPP]EPROTONOSUPPORT]The socketpair() call conforms to
IEEE Std 1003.1-2001 (“POSIX.1”).
Including the SOCK_CLOEXEC,
SOCK_CLOFORK, and
SOCK_NONBLOCK flags in the
type conforms to IEEE Std 1003.1-2024
(“POSIX.1”).
The socketpair() function call appeared in
4.2BSD.
Support for the SOCK_CLOEXEC and
SOCK_NONBLOCK flags appeared in
NetBSD 6.0.
Support for the SOCK_CLOFORK flag appeared
in FreeBSD 15.0, DragonFly
6.5 and NetBSD 11.0.
This call is currently implemented only for the
PF_LOCAL domain.
| July 8, 2025 | NetBSD 11.0 |