close - Close the file associated with a file descriptor
#include <unistd.h>
int close(
int filedes );
Interfaces documented on this reference page conform to
industry standards as follows:
close(): XSH4.0, XSH4.2, XSH5.0, XNS4.0, XNS5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
Specifies a valid open file descriptor.
The close() function closes the file associated with the
filedes parameter.
All regions of a file specified by the filedes parameter
that this process has previously locked with the lockf()
function are unlocked. This occurs even if the process
still has the file open by another file descriptor.
When all file descriptors associated with a pipe or FIFO
special file have been closed, any data remaining in the
pipe or FIFO is discarded. When all file descriptors associated
with an open file descriptor are closed, the open
file descriptor is freed. If the link count of the file is
0 (zero) when all file descriptors associated with the
file have been closed, the space occupied by the file is
freed and the file is no longer accessible.
When the close() function needs to block, only the calling
thread is suspended rather than all threads in the calling
process.
The last close() for a stream causes the stream associated
with fildes to be dismantled. Dismantling includes popping
any modules on the stream and closing the driver. If
O_NDELAY and O_NONBLOCK are clear and there are no signals
posted for the stream, close() waits up to 15 seconds for
each module to drain and up to 15 seconds for each driver
to drain. If the O_NDELAY or the O_NONBLOCK option is set
or if there are any pending signals, close() does not wait
for output to drain, and dismantles the stream immediately.
If a STREAMS file is closed, and the calling process
had previously registered to receive a SIGPOLL signal
[see signal()] for events associated with that file [see
I_SETSIG in streamio(7)], the calling process is unregistered
for events associated with the file.
For sockets (fildes refers to a socket), a call to close
causes the socket to be destroyed. For connection-oriented
sockets that have the SOCK_LINGER option set and have
untransmitted data, the close function blocks for the
period of time specified by the linger interval until all
data is transmitted.
Upon successful completion, a value of 0 (zero) is
returned. Otherwise, a value of -1 is returned and errno
is set to indicate the error.
If the close() function fails, errno may be set to one of
the following values: The filedes parameter is not a valid
open file descriptor. The close() function was interrupted
by a signal which was caught. A read or write
physical I/O error. [Tru64 UNIX] fildes is on a remote
machine and the link to that machine is no longer active.
[Tru64 UNIX] A close() function on an NFS file system
waits for all outstanding I/O to complete. If any operation
completes with an error, the error will be returned
by close(). The possible errors depend on the NFS server
implementation, but the most likely errors are: The write
has failed because the user's disk block quota is
exhausted. Attempted to write a file that exceeds the
maximum file size. A read or write physical I/O error.
Attempted to write on a full file system.
Functions: exec(2), fcntl(2), lockf(3), open(2), pipe(2),
socket(2), streamio(7).
Standards: standards(5).
Network Programmer's Guide
close(2)
[ Back ] |