]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/socketpair.2
getent.1, iconv.1, ldd.1, locale.1, localedef.1, memusage.1, memusagestat.1, pldd...
[thirdparty/man-pages.git] / man2 / socketpair.2
CommitLineData
fea681da
MK
1.\" Copyright (c) 1983, 1991 The Regents of the University of California.
2.\" All rights reserved.
3.\"
a9cd9cb7 4.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
fea681da
MK
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
8.\" 1. Redistributions of source code must retain the above copyright
9.\" notice, this list of conditions and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\" notice, this list of conditions and the following disclaimer in the
12.\" documentation and/or other materials provided with the distribution.
13.\" 3. All advertising materials mentioning features or use of this software
14.\" must display the following acknowledgement:
15.\" This product includes software developed by the University of
16.\" California, Berkeley and its contributors.
17.\" 4. Neither the name of the University nor the names of its contributors
18.\" may be used to endorse or promote products derived from this software
19.\" without specific prior written permission.
20.\"
21.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31.\" SUCH DAMAGE.
8c9302dc 32.\" %%%LICENSE_END
fea681da
MK
33.\"
34.\" @(#)socketpair.2 6.4 (Berkeley) 3/10/91
35.\"
36.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
37.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
c11b1abf
MK
38.\" Modified 2002-07-22 by Michael Kerrisk <mtk.manpages@gmail.com>
39.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
0cc9687d 40.\" 2008-10-11, mtk: Add description of SOCK_NONBLOCK and SOCK_CLOEXEC
fea681da 41.\"
9ba01802 42.TH SOCKETPAIR 2 2019-03-06 "Linux" "Linux Programmer's Manual"
fea681da
MK
43.SH NAME
44socketpair \- create a pair of connected sockets
45.SH SYNOPSIS
53a6b01d 46.BR "#include <sys/types.h>" " /* See NOTES */"
fea681da
MK
47.br
48.B #include <sys/socket.h>
68e4db0a 49.PP
2269e870
MK
50.BI "int socketpair(int " domain ", int " type ", int " protocol \
51", int " sv [2]);
fea681da
MK
52.SH DESCRIPTION
53The
31e9a9ec 54.BR socketpair ()
2269e870
MK
55call creates an unnamed pair of connected sockets in the specified
56.IR domain ,
fea681da
MK
57of the specified
58.IR type ,
59and using the optionally specified
60.IR protocol .
2269e870
MK
61For further details of these arguments, see
62.BR socket (2).
efeece04 63.PP
d9cb0d7d 64The file descriptors used in referencing the new sockets are returned in
fea681da
MK
65.IR sv [0]
66and
67.IR sv [1].
68The two sockets are indistinguishable.
47297adb 69.SH RETURN VALUE
c13182ef
MK
70On success, zero is returned.
71On error, \-1 is returned, and
fea681da
MK
72.I errno
73is set appropriately.
efeece04 74.PP
53ee58a3
MK
75On Linux (and other systems),
76.BR socketpair ()
77does not modify
78.I sv
79on failure.
80A requirement standardizing this behavior was added in POSIX.1-2016.
81.\" http://austingroupbugs.net/view.php?id=483
fea681da
MK
82.SH ERRORS
83.TP
84.B EAFNOSUPPORT
85The specified address family is not supported on this machine.
86.TP
87.B EFAULT
88The address
89.I sv
90does not specify a valid part of the process address space.
91.TP
92.B EMFILE
26c32fab 93The per-process limit on the number of open file descriptors has been reached.
fea681da
MK
94.TP
95.B ENFILE
e258766b 96The system-wide limit on the total number of open files has been reached.
fea681da
MK
97.TP
98.B EOPNOTSUPP
99The specified protocol does not support creation of socket pairs.
100.TP
101.B EPROTONOSUPPORT
102The specified protocol is not supported on this machine.
47297adb 103.SH CONFORMING TO
9fe752d0 104POSIX.1-2001, POSIX.1-2008, 4.4BSD.
e511ffb6 105.BR socketpair ()
8e9b2765 106first appeared in 4.2BSD.
1c44bd5b 107It is generally portable to/from
fea681da 108non-BSD systems supporting clones of the BSD socket layer (including
efbfd7ec 109System\ V variants).
fea681da 110.SH NOTES
fcac1f5a 111On Linux, the only supported domains for this call are
0daa9e92 112.B AF_UNIX
fea681da 113(or synonymously,
fcac1f5a
ES
114.BR AF_LOCAL )
115and
116.B AF_TIPC
117.\" commit: 70b03759e9ecfae400605fa34f3d7154cccbbba3
118(since Linux 4.12).
efeece04 119.PP
0cc9687d
MK
120Since Linux 2.6.27,
121.BR socketpair ()
122supports the
123.BR SOCK_NONBLOCK
124and
125.BR SOCK_CLOEXEC
57f8da4c
MK
126flags in the
127.I type
128argument, as described in
0cc9687d 129.BR socket (2).
efeece04 130.PP
9fe752d0 131POSIX.1 does not require the inclusion of
53a6b01d
MK
132.IR <sys/types.h> ,
133and this header file is not required on Linux.
134However, some historical (BSD) implementations required this header
135file, and portable applications are probably wise to include it.
47297adb 136.SH SEE ALSO
fea681da
MK
137.BR pipe (2),
138.BR read (2),
139.BR socket (2),
140.BR write (2),
5dfedcae 141.BR socket (7),
fea681da 142.BR unix (7)