ACCEPT(2)                 SYSTEM CALLS                  ACCEPT(2)

NAME
     accept - accept a connection on a socket

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>

     int accept(s, addr, addrlen)
     int s;
     struct sockaddr *addr;
     int *addrlen;

DESCRIPTION
     The argument s is  a  socket  that  has  been  created  with
     socket(2),  bound to an address with bind(2), and is listen-
     ing for connections after a  listen(2).   accept()  extracts
     the  first  connection  on the queue of pending connections,
     creates a new socket with the same properties of s and allo-
     cates  a  new file descriptor 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 marked non-blocking
     and  no  pending  connections  are  present  on  the  queue,
     accept() returns an error as described below.  The  accepted
     socket is used to read and write data to and from the socket
     which connected to this one; it is not used to  accept  more
     connections.  The original socket _s remains open for accept-
     ing further 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  parame-
     ter  is  determined by the domain in which the communication
     is occurring.  The 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.    This  call  is  used  with
     connection-based socket types, currently with SOCK_STREAM.

     It is possible to select(2) a socket  for  the  purposes  of
     doing an accept() by selecting it for read.

RETURN VALUES
     accept() returns a non-negative descriptor for the  accepted
     socket on success.  On failure, it returns -1 and sets errno
     to indicate the error.

ERRORS
     EBADF          The descriptor is invalid.

     EFAULT         The addr parameter is not in a writable  part
                    of the user address space.

     ENOTSOCK       The  descriptor  references  a  file,  not  a
                    socket.

     EOPNOTSUPP     The  referenced  socket  is   not   of   type
                    SOCK_STREAM.

     EWOULDBLOCK    The socket is marked non-blocking and no con-
                    nections are present to be accepted.

SEE ALSO
     bind(2), connect(2), listen(2), select(2), socket(2)












































Sun Release 4.1   Last change: 21 January 1990                  2



