|
|
1.1 ! root 1: .TH ACCEPT 2 "7 July 1983" ! 2: .UC 4 ! 3: .SH NAME ! 4: accept \- accept a connection on a socket ! 5: .SH SYNOPSIS ! 6: .ft B ! 7: .nf ! 8: #include <sys/types.h> ! 9: #include <sys/socket.h> ! 10: .PP ! 11: .ft B ! 12: ns = accept(s, addr, addrlen) ! 13: int ns, s; ! 14: struct sockaddr *addr; ! 15: int *addrlen; ! 16: .fi ! 17: .SH DESCRIPTION ! 18: The argument ! 19: .I s ! 20: is a socket which has been created with ! 21: .IR socket (2), ! 22: bound to an address with ! 23: .IR bind (2), ! 24: and is listening for connections after a ! 25: .IR listen (2). ! 26: .I Accept ! 27: extracts the first connection ! 28: on the queue of pending connections, creates ! 29: a new socket with the same properties of ! 30: .I s ! 31: and allocates a new file descriptor, ! 32: .IR ns , ! 33: for the socket. If no pending connections are ! 34: present on the queue, and the socket is not marked ! 35: as non-blocking, ! 36: .I accept ! 37: blocks the caller until a connection is present. ! 38: If the socket is marked non-blocking and no pending ! 39: connections are present on the queue, ! 40: .I accept ! 41: returns an error as described below. ! 42: The accepted socket, ! 43: .IR ns , ! 44: may not be used ! 45: to accept more connections. The original socket ! 46: .I s ! 47: remains open. ! 48: .PP ! 49: The argument ! 50: .I addr ! 51: is a result parameter which is filled in with ! 52: the address of the connecting entity, ! 53: as known to the communications layer. ! 54: The exact format of the ! 55: .I addr ! 56: parameter is determined by the domain in which the communication ! 57: is occurring. ! 58: The ! 59: .I addrlen ! 60: is a value-result parameter; it should initially contain the ! 61: amount of space pointed to by ! 62: .IR addr ; ! 63: on return it will contain the actual length (in bytes) of the ! 64: address returned. ! 65: This call ! 66: is used with connection-based socket types, currently with SOCK_STREAM. ! 67: .PP ! 68: It is possible to ! 69: .IR select (2) ! 70: a socket for the purposes of doing an ! 71: .I accept ! 72: by selecting it for read. ! 73: .SH "RETURN VALUE ! 74: The call returns \-1 on error. If it succeeds it returns a non-negative ! 75: integer which is a descriptor for the accepted socket. ! 76: .SH ERRORS ! 77: The \fIaccept\fP will fail if: ! 78: .TP 20 ! 79: [EBADF] ! 80: The descriptor is invalid. ! 81: .TP 20 ! 82: [ENOTSOCK] ! 83: The descriptor references a file, not a socket. ! 84: .TP 20 ! 85: [EOPNOTSUPP] ! 86: The referenced socket is not of type SOCK_STREAM. ! 87: .TP 20 ! 88: [EFAULT] ! 89: The \fIaddr\fP parameter is not in a writable part of the ! 90: user address space. ! 91: .TP 20 ! 92: [EWOULDBLOCK] ! 93: The socket is marked non-blocking and no connections ! 94: are present to be accepted. ! 95: .SH SEE ALSO ! 96: bind(2), connect(2), listen(2), select(2), socket(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.