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

1.1     ! root        1: .\" Copyright (c) 1980 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)close.2     6.3 (Berkeley) 5/22/86
        !             6: .\"
        !             7: .TH CLOSE 2 "May 22, 1986"
        !             8: .UC 4
        !             9: .SH NAME
        !            10: close \- delete a descriptor
        !            11: .SH SYNOPSIS
        !            12: .B close(d)
        !            13: .br
        !            14: .B "int d;"
        !            15: .SH DESCRIPTION
        !            16: The
        !            17: \fIclose\fP call deletes a descriptor from the per-process object
        !            18: reference table.
        !            19: If this is the last reference to the underlying object, then
        !            20: it will be deactivated.
        !            21: For example, on the last close of a file
        !            22: the current \fIseek\fP pointer associated with the file is lost;
        !            23: on the last close of a
        !            24: .IR socket (2)
        !            25: associated naming information and queued data are discarded;
        !            26: on the last close of a file holding an advisory lock
        !            27: the lock is released (see further
        !            28: .IR flock (2)\fR).
        !            29: .PP
        !            30: A close of all of a process's descriptors is automatic on
        !            31: .IR exit ,
        !            32: but since
        !            33: there is a limit on the number of active descriptors per process,
        !            34: .I close
        !            35: is necessary for programs that deal with many descriptors.
        !            36: .PP
        !            37: When a process forks (see
        !            38: .IR fork (2)),
        !            39: all descriptors for the new child process reference the same
        !            40: objects as they did in the parent before the fork.
        !            41: If a new process is then to be run using
        !            42: .IR execve (2),
        !            43: the process would normally inherit these descriptors.  Most
        !            44: of the descriptors can be rearranged with
        !            45: .IR dup2 (2)
        !            46: or deleted with
        !            47: .I close
        !            48: before the
        !            49: .I execve
        !            50: is attempted, but if some of these descriptors will still
        !            51: be needed if the execve fails, it is necessary to arrange for them
        !            52: to be closed if the execve succeeds.
        !            53: For this reason, the call ``fcntl(d, F_SETFD, 1)'' is provided,
        !            54: which arranges that a descriptor will be closed after a successful
        !            55: execve; the call ``fcntl(d, F_SETFD, 0)'' restores the default,
        !            56: which is to not close the descriptor.
        !            57: .SH "RETURN VALUE
        !            58: Upon successful completion, a value of 0 is returned.
        !            59: Otherwise, a value of \-1 is returned and the global integer variable
        !            60: .I errno
        !            61: is set to indicate the error.
        !            62: .SH ERRORS
        !            63: .I Close
        !            64: will fail if:
        !            65: .TP 15
        !            66: [EBADF]
        !            67: \fID\fP is not an active descriptor.
        !            68: .SH "SEE ALSO"
        !            69: accept(2), flock(2), open(2), pipe(2), socket(2), socketpair(2),
        !            70: execve(2), fcntl(2)

unix.superglobalmegacorp.com

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