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

개요

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

accept4(3c)

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  ac‐
       cepted connection is stored in the sockaddr structure pointed to by ad‐
       dress,  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,  in‐
       stead 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  ac‐
                       cessed 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 So‐
       laris.


       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