1 .\" $NetBSD: accept.2,v 1.25 2006/11/17 23:59:33 rillig Exp $
3 .\" Copyright (c) 1983, 1990, 1991, 1993
4 .\" The Regents of the University of California. All rights reserved.
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in the
13 .\" documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\" may be used to endorse or promote products derived from this software
16 .\" without specific prior written permission.
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" @(#)accept.2 8.2 (Berkeley) 12/11/93
37 .Nd accept a connection on a socket
43 .Fn accept "int s" "struct sockaddr * restrict addr" "socklen_t * restrict addrlen"
47 is a socket that has been created with
49 bound to an address with
51 and is listening for connections after a
56 extracts the first connection request on the queue of pending
57 connections, creates a new socket with the same properties of
59 and allocates a new file descriptor
61 If no pending connections are
62 present on the queue, and the socket is not marked
65 blocks the caller until a connection is present.
66 If the socket is marked non-blocking and no pending
67 connections are present on the queue,
69 returns an error as described below.
72 to accept more connections.
79 is a result parameter that is filled in with
80 the address of the connecting entity,
81 as known to the communications layer.
82 The exact format of the
84 parameter is determined by the domain in which the communication
88 is a value-result parameter; it should initially contain the
89 amount of space pointed to by
91 on return it will contain the actual length (in bytes) of the
94 is used with connection-based socket types, currently with
101 a socket for the purposes of doing an
103 by selecting or polling it for read.
105 For certain protocols which require an explicit confirmation,
112 as merely dequeuing the next connection
113 request and not implying confirmation.
114 Confirmation can be implied by a normal read or write on the new
115 file descriptor, and rejection can be implied by closing the
118 One can obtain user connection request data without confirming
119 the connection by issuing a
128 Similarly, one can provide user connection rejection information
131 call with providing only the control information,
135 The call returns \-1 on error.
136 If it succeeds, it returns a non-negative
137 integer that is a descriptor for the accepted socket.
144 The socket is marked non-blocking and no connections
145 are present to be accepted.
147 The descriptor is invalid.
148 .It Bq Er ECONNABORTED
149 A connection has been aborted.
153 parameter is not in a writable part of the
158 call has been interrupted by a signal.
160 The socket has not been set up to accept connections (using
165 The per-process descriptor table is full.
167 The system file table is full.
169 The descriptor references a file, not a socket.
171 The referenced socket is not of type