accept(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

accept(3c)

Standard C Library Functions                                        accept(3C)



NAME
       accept, accept4 - accept a new connection on a socket

SYNOPSIS
       #include <sys/socket.h>

       int accept(int socket, struct sockaddr *restrict address,
            socklen_t *restrict address_len);

       int accept4(int socket, struct sockaddr *restrict address,
            socklen_t *restrict address_len, int flags);

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         A socket created with socket(3C), bound  to  an  address
                      with  bind(3C), and in the LISTEN state after a success‐
                      ful call to listen(3C).


       address        Either a null pointer, or a pointer to a sockaddr struc‐
                      ture  where the address of the connecting socket will be
                      returned.


       address_len    Points to a  socklen_t  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 address_len.


       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  O_NONBLOCK  is
       not  set  on the file descriptor for the socket, accept() and accept4()
       will block until a connection is present. If the  listen(3C)  queue  is
       empty of connection requests and O_NONBLOCK is set on the file descrip‐
       tor for the socket, accept() and accept4() will fail and set  errno  to
       EAGAIN or EWOULDBLOCK.


       The accepted socket cannot itself accept more connections. The original
       socket remains open and can accept more connections.


       The accept4() function behaves like accept() but the  accepting  socket
       does  not  inherit  NDELAY  and  NONBLOCKING  from the original socket,
       instead it will take the settings from the flags argument:


       SOCK_NDELAY

           As if O_NDELAY is set for the socket.


       SOCK_NONBLOCK

           As if O_NONBLOCK is set for the socket.


       SOCK_NOSIGPIPE

           No SIGPIPE will be sent on write when  the  remote  connection  was
           closed; instead EPIPE is returned.


       SOCK_CLOEXEC

           The socket will be closed on exec() or spawn().


       SOCK_CLOFORK

           The socket will not be inherited by the child on fork() or spawn().



       If  both  SOCK_NDELAY and SOCK_NONBLOCK are set, the socket will behave
       as if only SOCK_NONBLOCK is set.

USAGE
       When a connection is available, select(3C) will indicate that the  file
       descriptor for the socket is ready for reading.

RETURN VALUES
       Upon  successful completion, accept() and accept4() return the nonnega‐
       tive file descriptor of the accepted socket. Otherwise, −1 is  returned
       and errno is set to indicate the error.

ERRORS
       The accept() and accept4() functions will fail if:

       EAGAIN          O_NONBLOCK is set for the socket file descriptor and no
       EWOULDBLOCK     connections are present to be accepted.



       EBADF           The socket argument is not a valid file descriptor.


       ECONNABORTED    A connection has been aborted.


       EFAULT          The  address  or  address_len  parameter  can  not   be
                       accessed or written.


       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          The per-process limit of file descriptors  are  already
                       open in the calling process.


       ENFILE          The  maximum  number  of file descriptors in the system
                       are already open.


       ENOTSOCK        The socket argument does not refer to a socket.


       EOPNOTSUPP      The socket type of the specified socket does  not  sup‐
                       port accepting connections.



       The accept() and accept4() functions may fail if:

       ENOBUFS    No buffer space is available.


       ENOMEM     There is insufficient memory available to complete the oper‐
                  ation.


       ENOSR      There are insufficient STREAMS resources available  to  com‐
                  plete the operation.


       EPROTO     A protocol error has occurred; for example, the STREAMS pro‐
                  tocol stack has not been initialized.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE  _  Interface StabilityCommitted _ MT-LevelAsync-Signal-
       Safe _ StandardSee standards(7).


SEE ALSO
       bind(3C), connect(3C),  listen(3C),  socket(3C),  attributes(7),  stan‐
       dards(7)

HISTORY
       The  accept()  function  has  been present since the initial release of
       Solaris.


       The accept4() function was added  to  Oracle  Solaris  in  the  Solaris
       11.4.0 release.



Oracle Solaris 11.4               2 Feb 2021                        accept(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3