diff options
Diffstat (limited to 'upstream/archlinux/man3p/accept.3p')
-rw-r--r-- | upstream/archlinux/man3p/accept.3p | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/accept.3p b/upstream/archlinux/man3p/accept.3p new file mode 100644 index 00000000..34885b81 --- /dev/null +++ b/upstream/archlinux/man3p/accept.3p @@ -0,0 +1,197 @@ +'\" et +.TH ACCEPT "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" +.SH PROLOG +This manual page is part of the POSIX Programmer's Manual. +The Linux implementation of this interface may differ (consult +the corresponding Linux manual page for details of Linux behavior), +or the interface may not be implemented on Linux. +.\" +.SH NAME +accept +\(em accept a new connection on a socket +.SH SYNOPSIS +.LP +.nf +#include <sys/socket.h> +.P +int accept(int \fIsocket\fP, struct sockaddr *restrict \fIaddress\fP, + socklen_t *restrict \fIaddress_len\fP); +.fi +.SH DESCRIPTION +The +\fIaccept\fR() +function shall extract the first connection on the queue of pending +connections, create a new socket with the same socket type protocol +and address family as the specified socket, and allocate a new file +descriptor for that socket. The file descriptor shall be allocated +as described in +.IR "Section 2.14" ", " "File Descriptor Allocation". +.P +The +\fIaccept\fR() +function takes the following arguments: +.IP "\fIsocket\fR" 12 +Specifies a socket that was created with +\fIsocket\fR(), +has been bound to an address with +\fIbind\fR(), +and has issued a successful call to +\fIlisten\fR(). +.IP "\fIaddress\fR" 12 +Either a null pointer, or a pointer to a +.BR sockaddr +structure where the address of the connecting socket shall be returned. +.IP "\fIaddress_len\fR" 12 +Either a null pointer, if +.IR address +is a null pointer, or a pointer to a +.BR socklen_t +object which on input specifies the length of the supplied +.BR sockaddr +structure, and on output specifies the length of the stored address. +.P +If +.IR address +is not a null pointer, the address of the peer for the accepted +connection shall be stored in the +.BR sockaddr +structure pointed to by +.IR address , +and the length of this address shall be stored in the object pointed to +by +.IR address_len . +.P +If the actual length of the address is greater than the length of the +supplied +.BR sockaddr +structure, the stored address shall be truncated. +.P +If the protocol permits connections by unbound clients, and the peer is +not bound, then the value stored in the object pointed to by +.IR address +is unspecified. +.P +If the listen queue is empty of connection requests and O_NONBLOCK is +not set on the file descriptor for the socket, +\fIaccept\fR() +shall block until a connection is present. If the +\fIlisten\fR() +queue is empty of connection requests and O_NONBLOCK is set on the file +descriptor for the socket, +\fIaccept\fR() +shall fail and set +.IR errno +to +.BR [EAGAIN] +or +.BR [EWOULDBLOCK] . +.P +The accepted socket cannot itself accept more connections. The original +socket remains open and can accept more connections. +.SH "RETURN VALUE" +Upon successful completion, +\fIaccept\fR() +shall return the non-negative file descriptor of the accepted socket. +Otherwise, \-1 shall be returned, +.IR errno +shall be set to indicate the error, and any object pointed to by +.IR address_len +shall remain unchanged. +.SH ERRORS +The +\fIaccept\fR() +function shall fail if: +.TP +.BR EAGAIN " or " EWOULDBLOCK +.br +O_NONBLOCK is set for the socket file descriptor and no connections are +present to be accepted. +.TP +.BR EBADF +The +.IR socket +argument is not a valid file descriptor. +.TP +.BR ECONNABORTED +.br +A connection has been aborted. +.TP +.BR EINTR +The +\fIaccept\fR() +function was interrupted by a signal that was caught before a valid +connection arrived. +.TP +.BR EINVAL +The +.IR socket +is not accepting connections. +.TP +.BR EMFILE +All file descriptors available to the process are currently open. +.TP +.BR ENFILE +The maximum number of file descriptors in the system are already open. +.TP +.BR ENOBUFS +No buffer space is available. +.TP +.BR ENOMEM +There was insufficient memory available to complete the operation. +.TP +.BR ENOTSOCK +The +.IR socket +argument does not refer to a socket. +.TP +.BR EOPNOTSUPP +The socket type of the specified socket does not support accepting +connections. +.P +The +\fIaccept\fR() +function may fail if: +.TP +.BR EPROTO +A protocol error has occurred; +for example, the STREAMS protocol stack has not been initialized. +.LP +.IR "The following sections are informative." +.SH EXAMPLES +None. +.SH "APPLICATION USAGE" +When a connection is available, +\fIselect\fR() +indicates that the file descriptor for the socket is ready for reading. +.SH RATIONALE +None. +.SH "FUTURE DIRECTIONS" +None. +.SH "SEE ALSO" +.IR "Section 2.14" ", " "File Descriptor Allocation", +.IR "\fIbind\fR\^(\|)", +.IR "\fIconnect\fR\^(\|)", +.IR "\fIlisten\fR\^(\|)", +.IR "\fIsocket\fR\^(\|)" +.P +The Base Definitions volume of POSIX.1\(hy2017, +.IR "\fB<sys_socket.h>\fP" +.\" +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1-2017, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 7, 2018 Edition, +Copyright (C) 2018 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. +In the event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . +.PP +Any typographical or formatting errors that appear +in this page are most likely +to have been introduced during the conversion of the source files to +man page format. To report such errors, see +https://www.kernel.org/doc/man-pages/reporting_bugs.html . |