Annotation of 43BSDReno/lib/libc/sys/accept.2, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1983, 1990 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" Redistribution and use in source and binary forms are permitted
        !             5: .\" provided that: (1) source distributions retain this entire copyright
        !             6: .\" notice and comment, and (2) distributions including binaries display
        !             7: .\" the following acknowledgement:  ``This product includes software
        !             8: .\" developed by the University of California, Berkeley and its contributors''
        !             9: .\" in the documentation or other materials provided with the distribution
        !            10: .\" and in all advertising materials mentioning features or use of this
        !            11: .\" software. Neither the name of the University nor the names of its
        !            12: .\" contributors may be used to endorse or promote products derived
        !            13: .\" from this software without specific prior written permission.
        !            14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
        !            15: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
        !            16: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            17: .\"
        !            18: .\"    @(#)accept.2    6.5 (Berkeley) 5/30/90
        !            19: .\"
        !            20: .TH ACCEPT 2 "May 30, 1990"
        !            21: .UC 5
        !            22: .SH NAME
        !            23: accept \- accept a connection on a socket
        !            24: .SH SYNOPSIS
        !            25: .ft B
        !            26: .nf
        !            27: #include <sys/types.h>
        !            28: #include <sys/socket.h>
        !            29: .PP
        !            30: .ft B
        !            31: ns = accept(s, addr, addrlen)
        !            32: int ns, s;
        !            33: struct sockaddr *addr;
        !            34: int *addrlen;
        !            35: .fi
        !            36: .SH DESCRIPTION
        !            37: The argument
        !            38: .I s
        !            39: is a socket that has been created with
        !            40: .IR socket (2),
        !            41: bound to an address with
        !            42: .IR bind (2),
        !            43: and is listening for connections after a
        !            44: .IR listen (2).
        !            45: .I Accept
        !            46: extracts the first connection request
        !            47: on the queue of pending connections, creates
        !            48: a new socket with the same properties of 
        !            49: .I s
        !            50: and allocates a new file descriptor,
        !            51: .IR ns ,
        !            52: for the socket.  If no pending connections are
        !            53: present on the queue, and the socket is not marked
        !            54: as non-blocking,
        !            55: .I accept
        !            56: blocks the caller until a connection is present.
        !            57: If the socket is marked non-blocking and no pending
        !            58: connections are present on the queue, 
        !            59: .I accept
        !            60: returns an error as described below.
        !            61: The accepted socket,
        !            62: .IR ns ,
        !            63: may not be used
        !            64: to accept more connections.  The original socket
        !            65: .I s
        !            66: remains open.
        !            67: .PP
        !            68: The argument
        !            69: .I addr
        !            70: is a result parameter that is filled in with
        !            71: the address of the connecting entity,
        !            72: as known to the communications layer.
        !            73: The exact format of the
        !            74: .I addr
        !            75: parameter is determined by the domain in which the communication
        !            76: is occurring.
        !            77: The 
        !            78: .I addrlen
        !            79: is a value-result parameter; it should initially contain the
        !            80: amount of space pointed to by
        !            81: .IR addr ;
        !            82: on return it will contain the actual length (in bytes) of the
        !            83: address returned.
        !            84: This call
        !            85: is used with connection-based socket types, currently with SOCK_STREAM.
        !            86: .PP
        !            87: It is possible to
        !            88: .IR select (2)
        !            89: a socket for the purposes of doing an
        !            90: .I accept
        !            91: by selecting it for read.
        !            92: .PP
        !            93: For certain protocols which require an explicit confirmation,
        !            94: such as ISO or DATAKIT,
        !            95: one should think of accept as merely dequeueing the next connection
        !            96: request, and not in of itself implying confirmation.
        !            97: Confirmation can be implied by a normal read or write on the new
        !            98: file desciptor, and rejection can be implied by closing the
        !            99: new socket.
        !           100: .PP
        !           101: One can obtain user connection request data without confirming
        !           102: the connection by issuing a 
        !           103: recvmsg call with an msg_iovlen of 0 and a non-zero
        !           104: msg_controllen, or by issuing a
        !           105: .IR getsockopt (2)
        !           106: request.
        !           107: Similarly, one can provide user connection rejection information
        !           108: by issuing a sendmsg call with providing only the control information,
        !           109: or by calling
        !           110: .IR setsockopt (2).
        !           111: .SH "RETURN VALUE
        !           112: The call returns \-1 on error.  If it succeeds, it returns a non-negative
        !           113: integer that is a descriptor for the accepted socket.
        !           114: .SH ERRORS
        !           115: The \fIaccept\fP will fail if:
        !           116: .TP 20
        !           117: [EBADF]
        !           118: The descriptor is invalid.
        !           119: .TP 20
        !           120: [ENOTSOCK]
        !           121: The descriptor references a file, not a socket.
        !           122: .TP 20
        !           123: [EOPNOTSUPP]
        !           124: The referenced socket is not of type SOCK_STREAM.
        !           125: .TP 20
        !           126: [EFAULT]
        !           127: The \fIaddr\fP parameter is not in a writable part of the
        !           128: user address space.
        !           129: .TP 20
        !           130: [EWOULDBLOCK]
        !           131: The socket is marked non-blocking and no connections
        !           132: are present to be accepted.
        !           133: .SH SEE ALSO
        !           134: bind(2), connect(2), listen(2), select(2), socket(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.