2004-11-03 13:51:07 +00:00
|
|
|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
|
|
.\"
|
|
|
|
|
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
|
|
|
|
|
.\" 1993 Michael Haardt, Ian Jackson.
|
|
|
|
|
.\"
|
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
|
.\" preserved on all copies.
|
|
|
|
|
.\"
|
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
|
.\" permission notice identical to this one.
|
2007-04-12 22:42:49 +00:00
|
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
|
.\" professionally.
|
2007-04-12 22:42:49 +00:00
|
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
|
.\"
|
|
|
|
|
.\" Modified Wed Jul 21 22:40:25 1993 by Rik Faith <faith@cs.unc.edu>
|
|
|
|
|
.\" Modified Sat Feb 18 15:27:48 1995 by Michael Haardt
|
|
|
|
|
.\" Modified Sun Apr 14 11:40:50 1996 by Andries Brouwer <aeb@cwi.nl>:
|
|
|
|
|
.\" corrected description of effect on locks (thanks to
|
|
|
|
|
.\" Tigran Aivazian <tigran@sco.com>).
|
|
|
|
|
.\" Modified Fri Jan 31 16:21:46 1997 by Eric S. Raymond <esr@thyrsus.com>
|
|
|
|
|
.\" Modified 2000-07-22 by Nicol<6F>s Lichtmaier <nick@debian.org>
|
|
|
|
|
.\" added note about close(2) not guaranteeing that data is safe on close.
|
|
|
|
|
.\"
|
2007-12-26 11:43:15 +00:00
|
|
|
|
.TH CLOSE 2 2007-12-28 "Linux" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.SH NAME
|
|
|
|
|
close \- close a file descriptor
|
|
|
|
|
.SH SYNOPSIS
|
|
|
|
|
.nf
|
|
|
|
|
.B #include <unistd.h>
|
|
|
|
|
.sp
|
|
|
|
|
.BI "int close(int " fd );
|
|
|
|
|
.fi
|
|
|
|
|
.SH DESCRIPTION
|
2005-06-22 10:49:19 +00:00
|
|
|
|
.BR close ()
|
2004-11-03 13:51:07 +00:00
|
|
|
|
closes a file descriptor, so that it no longer refers to any file and
|
2005-06-22 10:49:19 +00:00
|
|
|
|
may be reused.
|
|
|
|
|
Any record locks (see
|
|
|
|
|
.BR fcntl (2))
|
|
|
|
|
held on the file it was associated with,
|
2004-11-03 13:51:07 +00:00
|
|
|
|
and owned by the process, are removed (regardless of the file
|
|
|
|
|
descriptor that was used to obtain the lock).
|
|
|
|
|
.PP
|
|
|
|
|
If
|
|
|
|
|
.I fd
|
2007-12-26 11:43:15 +00:00
|
|
|
|
is the last file descriptor referring to the underlying
|
|
|
|
|
open file description (see
|
|
|
|
|
.BR open (2)),
|
|
|
|
|
the resources associated with the open file description are freed;
|
2004-11-03 13:51:07 +00:00
|
|
|
|
if the descriptor was the last reference to a file which has been
|
|
|
|
|
removed using
|
|
|
|
|
.BR unlink (2)
|
|
|
|
|
the file is deleted.
|
|
|
|
|
.SH "RETURN VALUE"
|
2005-06-22 10:49:19 +00:00
|
|
|
|
.BR close ()
|
2004-12-20 12:24:06 +00:00
|
|
|
|
returns zero on success.
|
|
|
|
|
On error, \-1 is returned, and
|
|
|
|
|
.I errno
|
|
|
|
|
is set appropriately.
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.SH ERRORS
|
|
|
|
|
.TP
|
|
|
|
|
.B EBADF
|
|
|
|
|
.I fd
|
|
|
|
|
isn't a valid open file descriptor.
|
|
|
|
|
.TP
|
|
|
|
|
.B EINTR
|
|
|
|
|
The
|
|
|
|
|
.BR close ()
|
2008-07-07 04:40:49 +00:00
|
|
|
|
call was interrupted by a signal; see
|
|
|
|
|
.BR signal (7).
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.TP
|
|
|
|
|
.B EIO
|
|
|
|
|
An I/O error occurred.
|
|
|
|
|
.SH "CONFORMING TO"
|
2007-04-12 22:42:49 +00:00
|
|
|
|
SVr4, 4.3BSD, POSIX.1-2001.
|
2006-08-03 13:57:17 +00:00
|
|
|
|
.\" SVr4 documents an additional ENOLINK error condition.
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.SH NOTES
|
2007-04-12 22:42:49 +00:00
|
|
|
|
Not checking the return value of
|
2006-08-03 13:57:17 +00:00
|
|
|
|
.BR close ()
|
|
|
|
|
is a common but nevertheless
|
2007-04-12 22:42:49 +00:00
|
|
|
|
serious programming error.
|
|
|
|
|
It is quite possible that errors on a
|
2004-11-03 13:51:07 +00:00
|
|
|
|
previous
|
|
|
|
|
.BR write (2)
|
|
|
|
|
operation are first reported at the final
|
2005-10-19 06:54:38 +00:00
|
|
|
|
.BR close ().
|
2004-11-03 13:51:07 +00:00
|
|
|
|
Not checking the return value when closing the file may lead to
|
2007-04-12 22:42:49 +00:00
|
|
|
|
silent loss of data.
|
|
|
|
|
This can especially be observed with NFS
|
2004-11-03 13:51:07 +00:00
|
|
|
|
and with disk quota.
|
|
|
|
|
.PP
|
|
|
|
|
A successful close does not guarantee that the data has been successfully
|
2007-04-12 22:42:49 +00:00
|
|
|
|
saved to disk, as the kernel defers writes.
|
2008-03-19 07:26:08 +00:00
|
|
|
|
It is not common for a file system
|
2007-04-12 22:42:49 +00:00
|
|
|
|
to flush the buffers when the stream is closed.
|
|
|
|
|
If you need to be sure that
|
2004-11-03 13:51:07 +00:00
|
|
|
|
the data is physically stored use
|
|
|
|
|
.BR fsync (2).
|
|
|
|
|
(It will depend on the disk hardware at this point.)
|
2007-09-13 19:38:28 +00:00
|
|
|
|
.PP
|
|
|
|
|
It is probably unwise to close file descriptors while
|
|
|
|
|
they may be in use by system calls in
|
|
|
|
|
other threads in the same process.
|
close.2, epoll_create.2, epoll_ctl.2, fcntl.2, madvise.2, mmap.2, mremap.2, select_tut.2, setgid.2, setuid.2, syscalls.2, vmsplice.2, dlopen.3, fts.3, getpw.3, stdio.3, fd.4, initrd.4, random.4, sd.4, bootparam.7, capabilities.7, cpuset.7, epoll.7, inotify.7, man.7, socket.7, x25.7: Global fix: s/re-/re/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "re-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 17:45:23 +00:00
|
|
|
|
Since a file descriptor may be reused,
|
2007-09-13 19:38:28 +00:00
|
|
|
|
there are some obscure race conditions
|
|
|
|
|
that may cause unintended side effects.
|
|
|
|
|
.\" Date: Tue, 4 Sep 2007 13:57:35 +0200
|
|
|
|
|
.\" From: Fredrik Noring <noring@nocrew.org>
|
|
|
|
|
.\" One such race involves signals and ERESTARTSYS. If a file descriptor
|
|
|
|
|
.\" in use by a system call is closed and then reused by e.g. an
|
2008-03-11 12:48:45 +00:00
|
|
|
|
.\" independent open() in some unrelated thread, before the original system
|
2007-09-13 19:38:28 +00:00
|
|
|
|
.\" call has restared after ERESTARTSYS, the original system call will
|
|
|
|
|
.\" later restart with the reused file descriptor. This is most likely a
|
|
|
|
|
.\" serious programming error.
|
2004-11-03 13:51:07 +00:00
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
|
.BR fcntl (2),
|
|
|
|
|
.BR fsync (2),
|
|
|
|
|
.BR open (2),
|
|
|
|
|
.BR shutdown (2),
|
|
|
|
|
.BR unlink (2),
|
|
|
|
|
.BR fclose (3)
|