close(), exceptions and problems
jepler at inetnebr.com
Wed Mar 28 04:38:28 CEST 2001
On 26 Mar 2001 20:43:13 -0500, David Bolen
<db3l at fitlinxx.com> wrote:
>Note that close() is often is the point at which buffered data is
>flushed to a file, so there are a variety of ways in which that can
>fail (I/O error, out of disk space, etc...) which will cause the
>close() to fail.
GNU Libc's documentation is fairly explicit about this:
The normal return value from `close' is 0; a value of -1 is
returned in case of failure. The following `errno' error
conditions are defined for this function:
The FILEDES argument is not a valid file descriptor.
The `close' call was interrupted by a signal. *Note
Interrupted Primitives::. Here is an example of how to
handle `EINTR' properly:
TEMP_FAILURE_RETRY (close (desc));
When the file is accessed by NFS, these errors from `write'
can sometimes not be detected until `close'. *Note I/O
Primitives::, for details on their meaning.
Strangely enough, the section 2 manpage omits this detail and documents
the only errno value of close as EBADF.
More information about the Python-list