Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

accept(2)

flock(2)

open(2)

pipe(2)

socket(2)

socketpair(2)

execve(2)

fcntl(2)

CLOSE(2)                             BSD                              CLOSE(2)



NAME
     close - delete a descriptor

SYNOPSIS
     close(d)
     int d;

DESCRIPTION
     The close call deletes a descriptor from the per-process object reference
     table.  If this is the last reference to the underlying object, then it
     will be deactivated.  For example, on the last close of a file, the
     current seek pointer associated with the file is lost; on the last close
     of a socket(2), associated naming information and queued data are
     discarded; on the last close of a file holding an advisory lock, the lock
     is released (see flock(2)).

     A close of all of a process' descriptors is automatic on exit, but;
     since, there is a limit on the number of active descriptors per process,
     close is necessary for programs that deal with many descriptors.

     When a process forks (see fork(2)), all descriptors for the new child
     process reference the same objects as they did in the parent before the
     fork.  If a new process is then to be run using execve(2), the process
     would normally inherit these descriptors.  Most of the descriptors can be
     rearranged with dup2(2) or deleted with close before the execve is
     attempted; but, if some of these descriptors will still be needed if the
     execve fails, it is necessary to arrange for them to be closed if the
     execve succeeds.  For this reason, the call "fcntl(d, F_SETFD, 1)" is
     provided, which arranges that a descriptor will be closed after a
     successful execve; the call "fcntl(d, F_SETFD, 0)" restores the default,
     which is to not close the descriptor.

ERRORS
     close will fail if the following is true:

     [EBADF]   d is not an active descriptor.

SEE ALSO
     accept(2), flock(2), open(2), pipe(2), socket(2), socketpair(2),
     execve(2), fcntl(2)

DIAGNOSTICS
     Upon successful completion, a value of 0 is returned.  Otherwise, a value
     of -1 is returned and the global integer variable errno is set to
     indicate the error.

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026