accept(3N-xs) (X/OPEN SOCKETS) accept(3N-xs)
NAME
accept - accept a new connection on a socket
SYNOPSIS
cc [flag ...] file ... -lxnet [library ...]
#include <sys/socket.h>
int accept(int socket, struct sockaddr *address,
sizet *addresslen);
DESCRIPTION
The accept function extracts the first connection on the queue of
pending connections, creates a new socket with the same socket type
protocol and address family as the specified socket, and allocates a
new file descriptor for that socket.
The function takes the following arguments:
socket Specifies a socket that was created with socket, has
been bound to an address with bind, and has issued a
successful call to listen.
address Either a null pointer, or a pointer to a sockaddr
structure where the address of the connecting socket
will be returned.
addresslen Points to a sizet which on input specifies the length
of the supplied sockaddr structure, and on output
specifies the length of the stored address.
If address is not a null pointer, the address of the peer for the
accepted connection is stored in the sockaddr structure pointed to by
address, and the length of this address is stored in the object
pointed to by addresslen.
If the actual length of the address is greater than the length of the
supplied sockaddr structure, the stored address will be truncated.
If the protocol permits connections by unbound clients, and the peer
is not bound, then the value stored in the object pointed to by
address is unspecified.
If the listen queue is empty of connection requests and ONONBLOCK is
not set on the file descriptor for the socket, accept will block until
a connection is present. If the listen queue is empty of connection
requests and ONONBLOCK is set on the file descriptor for the socket,
accept will fail and set errno to EWOULDBLOCK or EAGAIN.
The accepted socket cannot itself accept more connections. The origi-
nal socket remains open and can accept more connections.
Page 1 Reliant UNIX 5.44 Printed 11/98
accept(3N-xs) (X/OPEN SOCKETS) accept(3N-xs)
RETURN VALUE
Upon successful completion, accept returns the non-negative file
descriptor of the accepted socket. Otherwise, -1 is returned and errno
is set to indicate the error.
ERRORS
The accept function will fail if:
EBADF The socket argument is not a valid file descriptor.
ECONNABORTED A connection has been aborted.
ENOTSOCK The socket argument does not refer to a socket.
EOPNOTSUPP The socket type of the specified socket does not sup-
port accepting connections.
EAGAIN or EWOULDBLOCK
ONONBLOCK is set for the socket file descriptor and
no connections are present to be accepted.
EINTR The accept function was interrupted by a signal that
was caught before a valid connection arrived.
EINVAL The socket is not accepting connections.
EMFILE {OPENMAX} file descriptors are currently open in the
calling process.
ENFILE The maximum number of file descriptors in the system
are already open.
The accept function may fail if:
ENOMEM There was insufficient memory available to complete
the operation.
ENOBUFS No buffer space is available.
ENOSR There was insufficient STREAMS resources available to
complete the operation.
EPROTO A protocol error has occurred; for example, the
STREAMS protocol stack has not been initialized.
APPLICATION USAGE
When a connection is available, select will indicate that the file
descriptor for the socket is ready for reading.
SEE ALSO
bind(3N-xs), connect(3N-xs), listen(3N-xs), socket(3N-xs).
Page 2 Reliant UNIX 5.44 Printed 11/98