close(2)close(2)Nameclose - delete a descriptor
The call deletes a descriptor from the per-process object reference ta‐
ble. If the descriptor is the last reference to the underlying object,
then the object is deactivated. For example, on the last close of a
file, the current pointer associated with the file is lost. On the
last close of a socket, discards associated naming information and
queued data. On the last close of a file holding an advisory lock, the
lock is released. For further information, see
A process's descriptors are automatically closed when a process exits,
but because each process can have a limited number of active descrip‐
tors, is necessary for programs that deal with many descriptors.
When a process forks, all descriptors for the new child process refer‐
ence the same objects as they did in the parent process before the
fork. For further information, see If a new process is then to be run
using the process would normally inherit these descriptors. Most of
the descriptors can be rearranged with the system call or deleted with
before is called. However, if any descriptors are needed if the fails,
they must be closed if the execve succeeds. For this reason, the call,
fcntl(d, F_SETFD, 1), is provided. This call arranges that a descriptor
is closed after a successful call. The call, fcntl(d, F_SETFD, 0),
restores the default, which is to not close the descriptor.
When is used on a descriptor that refers to a remote file over NFS, and
that file has been modified by using then any cached data is flushed
before returns. If an asynchronous write error has occurred previously
with this remote file, or occurred as part of the flush operation
described above, then returns -1 and errno will be set to the error
code. The return code from should be inspected by any program that can
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.
The system call fails under the following conditions:
[EBADF] D is not an active descriptor.
[EINTR] The function was interrupted by a signal.
If an error occurs on an asynchronous write over NFS, the error cannot
always be returned from a system call. The error code is returned on
or The following are NFS-only error messages:
[EACCESS] The requested address is protected, and the current user
has inadequate permission to access it.
[ENOSPC] There is no free space remaining on the file system con‐
taining the file.
[EDQUOT] The user's quota of disk blocks on the file system con‐
taining the file has been exhausted.
[EIO] An I/O error occurred while reading from or writing to
the file system.
[EROFS] The file is on a read-only file system.
[ESTALE] The fd argument is invalid because the file referred to
by that file handle no longer exists or has been
[ETIMEDOUT] A write operation failed because the server did not
properly respond after a period of time that is depen‐
dent on the options.
See Alsoaccept(2), execve(2), fcntl(2), flock(2), fsync(2), open(2), pipe(2),
socket(2), socketpair(2), write(2)close(2)