4.3BSD-UWisc/man/cat2/close.2

Compare this file to the similar file:
Show the results in this format:




CLOSE(2)            UNIX Programmer's Manual             CLOSE(2)



NAME
     close - delete a descriptor

SYNOPSIS
     close(d)
     int d;

DESCRIPTION
     The _c_l_o_s_e 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 _s_e_e_k
     pointer associated with the file is lost; on the last close
     of a _s_o_c_k_e_t(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 further _f_l_o_c_k(2)).

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

     When a process forks (see _f_o_r_k(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 _e_x_e_c_v_e(2), the process would normally inherit
     these descriptors.  Most of the descriptors can be rear-
     ranged with _d_u_p_2(2) or deleted with _c_l_o_s_e before the _e_x_e_c_v_e
     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.

RETURN VALUE
     Upon successful completion, a value of 0 is returned.  Oth-
     erwise, a value of -1 is returned and the global integer
     variable _e_r_r_n_o is set to indicate the error.

ERRORS
     _C_l_o_s_e will fail if:

     [EBADF]        _D is not an active descriptor.

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






Printed 12/27/86          May 22, 1986                          1