Index of Section 2 Manual Pages
| Interix / SUA | close.2 | Interix / SUA |
close(2) close(2)
close()
NAME
close() - delete a descriptor
SYNOPSIS
#include
int close (int d)
DESCRIPTION
The close(2) call deletes the file descriptor d and makes it available for
re-use. If the calling process owns any outstanding record locks on the
file indicated by d, the call unlocks them.
When all of the file descriptors pointing to a file are deleted, the file
is removed. If the file is a pipe or a FIFO, any data remaining in the
pipe or FIFO is discarded. 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), the associated naming information and queued data are
discarded.
When a process exits, all associated file descriptors are freed, but since
there is a limit on active descriptors per process, the close(2) function
call is useful when a large quantity of file descriptors are being
handled.
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 exec(2), the process would
normally inherit these descriptors. Most of the descriptors can be
rearranged with dup2(2) or deleted with close(2) before the execve(2) is
attempted, but if some of these descriptors will still be needed if the
execve(2) fails, it is necessary to arrange for them to be closed if the
execve(2) succeeds. To do this, use the call:
fcntl(d, F_SETFD, 1)
which arranges that a descriptor will be closed after a successful execve;
to restore the default (that is, not to close the descriptor), use the
call:
fcntl(d, F_SETFD, 0)
RETURN VALUES
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.
ERRORS
The close(2) call will fail if:
[EBADF]
D is not an active descriptor.
[EINTR]
An interrupt was received.
SEE ALSO
accept(2)
socket(2)
exec(2)
fcntl(2)
open(2)
pipe(2)
USAGE NOTES
The close function is thread safe.
The close function is async-signal safe.