summaryrefslogtreecommitdiffstats
path: root/man2/socketpair.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/socketpair.2')
-rw-r--r--man2/socketpair.2116
1 files changed, 116 insertions, 0 deletions
diff --git a/man2/socketpair.2 b/man2/socketpair.2
new file mode 100644
index 0000000..741596e
--- /dev/null
+++ b/man2/socketpair.2
@@ -0,0 +1,116 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" SPDX-License-Identifier: BSD-4-Clause-UC
+.\"
+.\" @(#)socketpair.2 6.4 (Berkeley) 3/10/91
+.\"
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2002-07-22 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2008-10-11, mtk: Add description of SOCK_NONBLOCK and SOCK_CLOEXEC
+.\"
+.TH socketpair 2 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+socketpair \- create a pair of connected sockets
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/socket.h>
+.PP
+.BI "int socketpair(int " domain ", int " type ", int " protocol \
+", int " sv [2]);
+.fi
+.SH DESCRIPTION
+The
+.BR socketpair ()
+call creates an unnamed pair of connected sockets in the specified
+.IR domain ,
+of the specified
+.IR type ,
+and using the optionally specified
+.IR protocol .
+For further details of these arguments, see
+.BR socket (2).
+.PP
+The file descriptors used in referencing the new sockets are returned in
+.I sv[0]
+and
+.IR sv[1] .
+The two sockets are indistinguishable.
+.SH RETURN VALUE
+On success, zero is returned.
+On error, \-1 is returned,
+.I errno
+is set to indicate the error, and
+.I sv
+is left unchanged
+.PP
+On Linux (and other systems),
+.BR socketpair ()
+does not modify
+.I sv
+on failure.
+A requirement standardizing this behavior was added in POSIX.1-2008 TC2.
+.\" http://austingroupbugs.net/view.php?id=483
+.SH ERRORS
+.TP
+.B EAFNOSUPPORT
+The specified address family is not supported on this machine.
+.TP
+.B EFAULT
+The address
+.I sv
+does not specify a valid part of the process address space.
+.TP
+.B EMFILE
+The per-process limit on the number of open file descriptors has been reached.
+.TP
+.B ENFILE
+The system-wide limit on the total number of open files has been reached.
+.TP
+.B EOPNOTSUPP
+The specified protocol does not support creation of socket pairs.
+.TP
+.B EPROTONOSUPPORT
+The specified protocol is not supported on this machine.
+.SH VERSIONS
+On Linux, the only supported domains for this call are
+.B AF_UNIX
+(or synonymously,
+.BR AF_LOCAL )
+and
+.B AF_TIPC
+.\" commit: 70b03759e9ecfae400605fa34f3d7154cccbbba3
+(since Linux 4.12).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.4BSD.
+.PP
+.BR socketpair ()
+first appeared in 4.2BSD.
+It is generally portable to/from
+non-BSD systems supporting clones of the BSD socket layer (including
+System\ V variants).
+.PP
+Since Linux 2.6.27,
+.BR socketpair ()
+supports the
+.B SOCK_NONBLOCK
+and
+.B SOCK_CLOEXEC
+flags in the
+.I type
+argument, as described in
+.BR socket (2).
+.SH SEE ALSO
+.BR pipe (2),
+.BR read (2),
+.BR socket (2),
+.BR write (2),
+.BR socket (7),
+.BR unix (7)