summaryrefslogtreecommitdiffstats
path: root/man2/listen.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/listen.2')
-rw-r--r--man2/listen.2155
1 files changed, 155 insertions, 0 deletions
diff --git a/man2/listen.2 b/man2/listen.2
new file mode 100644
index 0000000..9512366
--- /dev/null
+++ b/man2/listen.2
@@ -0,0 +1,155 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" and Copyright (C) 2007, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" All rights reserved.
+.\"
+.\" SPDX-License-Identifier: BSD-4-Clause-UC
+.\"
+.\" $Id: listen.2,v 1.6 1999/05/18 14:10:32 freitag Exp $
+.\"
+.\" Modified Fri Jul 23 22:07:54 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 950727 by aeb, following a suggestion by Urs Thuermann
+.\" <urs@isnogud.escape.de>
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1998 by Andi Kleen
+.\" Modified 11 May 2001 by Sam Varshavchik <mrsam@courier-mta.com>
+.\"
+.\"
+.TH listen 2 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+listen \- listen for connections on a socket
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/socket.h>
+.PP
+.BI "int listen(int " sockfd ", int " backlog );
+.fi
+.SH DESCRIPTION
+.BR listen ()
+marks the socket referred to by
+.I sockfd
+as a passive socket, that is, as a socket that will
+be used to accept incoming connection requests using
+.BR accept (2).
+.PP
+The
+.I sockfd
+argument is a file descriptor that refers to a socket of type
+.B SOCK_STREAM
+or
+.BR SOCK_SEQPACKET .
+.PP
+The
+.I backlog
+argument defines the maximum length
+to which the queue of pending connections for
+.I sockfd
+may grow.
+If a connection request arrives when the queue is full, the client
+may receive an error with an indication of
+.B ECONNREFUSED
+or, if the underlying protocol supports retransmission, the request may be
+ignored so that a later reattempt at connection succeeds.
+.SH RETURN VALUE
+On success, zero is returned.
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EADDRINUSE
+Another socket is already listening on the same port.
+.TP
+.B EADDRINUSE
+(Internet domain sockets)
+The socket referred to by
+.I sockfd
+had not previously been bound to an address and,
+upon attempting to bind it to an ephemeral port,
+it was determined that all port numbers in the ephemeral port range
+are currently in use.
+See the discussion of
+.I /proc/sys/net/ipv4/ip_local_port_range
+in
+.BR ip (7).
+.TP
+.B EBADF
+The argument
+.I sockfd
+is not a valid file descriptor.
+.TP
+.B ENOTSOCK
+The file descriptor
+.I sockfd
+does not refer to a socket.
+.TP
+.B EOPNOTSUPP
+The socket is not of a type that supports the
+.BR listen ()
+operation.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.4BSD
+(first appeared in 4.2BSD).
+.SH NOTES
+To accept connections, the following steps are performed:
+.RS 4
+.IP (1) 5
+A socket is created with
+.BR socket (2).
+.IP (2)
+The socket is bound to a local address using
+.BR bind (2),
+so that other sockets may be
+.BR connect (2)ed
+to it.
+.IP (3)
+A willingness to accept incoming connections and a queue limit for incoming
+connections are specified with
+.BR listen ().
+.IP (4)
+Connections are accepted with
+.BR accept (2).
+.RE
+.PP
+The behavior of the
+.I backlog
+argument on TCP sockets changed with Linux 2.2.
+Now it specifies the queue length for
+.I completely
+established sockets waiting to be accepted,
+instead of the number of incomplete connection requests.
+The maximum length of the queue for incomplete sockets
+can be set using
+.IR /proc/sys/net/ipv4/tcp_max_syn_backlog .
+When syncookies are enabled there is no logical maximum
+length and this setting is ignored.
+See
+.BR tcp (7)
+for more information.
+.PP
+If the
+.I backlog
+argument is greater than the value in
+.IR /proc/sys/net/core/somaxconn ,
+then it is silently capped to that value.
+Since Linux 5.4, the default in this file is 4096;
+in earlier kernels, the default value is 128.
+Before Linux 2.4.25, this limit was a hard coded value,
+.BR SOMAXCONN ,
+with the value 128.
+.\" The following is now rather historic information (MTK, Jun 05)
+.\" Don't rely on this value in portable applications since BSD
+.\" (and some BSD-derived systems) limit the backlog to 5.
+.SH EXAMPLES
+See
+.BR bind (2).
+.SH SEE ALSO
+.BR accept (2),
+.BR bind (2),
+.BR connect (2),
+.BR socket (2),
+.BR socket (7)