accept(2)
_________________________________________________________________
accept System Call
Accept a connection on a socket.
_________________________________________________________________
SYNTAX
#include <socket.h>
int accept (s, addr, addrlen)
int s;
struct sockaddr * addr;
int * addrlen;
PARAMETERS
s File descriptor of socket listening for connection
requests.
addr Structure to receive the address of newly
connected peer.
addrlen On input contains the number of bytes available
for the peer address; updated to indicate the
number of bytes returned.
DESCRIPTION
The argument <s> is the file descriptor of a socket that has
been:
* Created with the socket() system call.
* Bound to an address with bind().
* Made to listen for connections with listen().
Accept extracts the first connection on the queue of pending
connections, creates a new socket of the same type (e.g.
SOCK_STREAM) as <s>, and allocates a new file descriptor, <ns>,
for the socket. If no pending connections are present on the
queue and the socket is not marked as non-blocking, accept blocks
the caller until a connection is present. If the socket is
DG/UX 4.00 Page 1
Licensed material--property of copyright holder(s)
accept(2)
marked non-blocking and no pending connections are present on the
queue, accept returns an error as described below. The accepted
socket, <ns>, will be in the connected state. The original
socket <s> remains open listening for more connections.
The argument <addr> is a result parameter that is filled in with
the address of the connecting entity, as known to the
communications layer. The exact format of the <addr> parameter
is determined by the domain in which the communication is
occurring. See related documentation for a descripton of address
formats for each domain. <Addrlen> is a value/result parameter;
it should initially contain the amount of space pointed to by
<addr>; on return it will contain the actual length (in bytes) of
the address returned. If addrlen is zero, the pointer will be
ignored. If the address buffer is too small to hold all of the
address, the address will be truncated.
This call is used with connection-based socket types, currently
with SOCK_STREAM.
A select() system call can be issued on a listening socket for
notification of connnection requests.
ACCESS CONTROL
None.
RETURN VALUE
<ns> The call was successful. <Ns> is a non-negative
integer that is a descriptor for the accepted
socket.
-1 An error occurred. Errno is set to indicate the
error.
EXCEPTIONS
Errno may be set to one of the following error codes:
EBADF The argument <s> is not an active, valid
descriptor.
ENOTSOCK The descriptor references a file, not a socket.
DG/UX 4.00 Page 2
Licensed material--property of copyright holder(s)
accept(2)
EMFILE No more user file descriptors available, the per-
process limit has been reached.
ENFILE No more system file descriptors available, the
system limit has been reached.
EINVAL The socket <s> is not in the listen state.
EOPNOTSUPP The referenced socket is not of type SOCK_STREAM.
EFAULT The addr parameter is not in a writable part of
the user address space.
ECONNABORTED Listen operation aborted by system.
EAGAIN The socket is marked non-blocking and no
connections are present to be accepted.
SEE ALSO
The related manual sections: inet(3N), inet(6F), unix_ipc(6F),
bind(2), connect(2), listen(2), select(2), socket(2).
DG/UX 4.00 Page 3
Licensed material--property of copyright holder(s)