This function is used to accept a connection request on the server
socket socket.
The accept
function waits if there are no connections pending,
unless the socket socket has nonblocking mode set. (You can use
select
to wait for a pending connection, with a nonblocking
socket.) See File Status Flags, for information about nonblocking
mode.
The addr and length-ptr arguments are used to return
information about the name of the client socket that initiated the
connection. See Socket Addresses, for information about the format
of the information.
Accepting a connection does not make socket part of the
connection. Instead, it creates a new socket which becomes
connected. The normal return value of accept
is the file
descriptor for the new socket.
After accept
, the original socket socket remains open and
unconnected, and continues listening until you close it. You can
accept further connections with socket by calling accept
again.
If an error occurs, accept
returns -1
. The following
errno
error conditions are defined for this function:
EBADF
- The socket argument is not a valid file descriptor.
ENOTSOCK
- The descriptor socket argument is not a socket.
EOPNOTSUPP
- The descriptor socket does not support this operation.
EWOULDBLOCK
- socket has nonblocking mode set, and there are no pending
connections immediately available.
This function is defined as a cancellation point in multi-threaded
programs, so one has to be prepared for this and make sure that
allocated resources (like memory, files descriptors, semaphores or
whatever) are freed even if the thread is canceled.