of "Thu, 11 Nov 2010 01: 08:02 +0100."
<[email protected]>
References: <18061.1289240...@chthon>
<[email protected]> <21672.1289313...@chthon>
<[email protected]>
<[email protected]>
<29825.1289316...@chthon> <[email protected]>
<[email protected]>
<9570.1289357...@chthon>
<[email protected]> <tchr...@chthon>
<25267.1289362...@chthon> <9217.1289400...@chthon>
<[email protected]>
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
X-Mailer: nmh v1.3 && nvi v1.79 (duh!)
Date: Wed, 10 Nov 2010 17:50:52 -0700
Message-ID: <32724.1289436...@chthon>
From: Tom Christiansen <tchr...@chthon>
> I still have a hard time imagining how closing a read-only filehandle
> can cause EIOs, but I believe you if you say they happen. I've heard
> weirder things.
============
CLOSE(2) Linux Programmerâs Manual CLOSE(2)
ERRORS
EBADF fd isnât a valid open file descriptor.
EINTR The close() call was interrupted by a signal; see signal(7).
EIO An I/O error occurred.
============
SunOS 5.10 Last change: 18 Oct 2005 2
System Calls close(2)
ERRORS
The close() function will fail if:
EBADF The fildes argument is not a valid file
descriptor.
EINTR The close() function was interrupted by a
signal.
ENOLINK The fildes argument is on a remote machine
and the link to that machine is no longer
active.
ENOSPC There was no free space remaining on the
device containing the file.
The close() function may fail if:
EIO An I/O error occurred while reading from or
writing to the file system.
============
Other manpages say that lingering EIO errors from a previous read(2)
and/or write(2) can cause close(2) to do the same. You can kinda
read that in the last EIO description above, if you squint enough.
Here's another problem:
while (<STDIN>) {
...
}
exit(0);
Nobody *EVER* bothers to check that when readline returned undef it did so
*without setting errno*. A program run via
perl script < /bad/disk/file
can get EIO and nobody ever notices. Bad. Very bad. Very very bad.
This kinda thing needs to be autodied or autocarped. It's too important
either to miss or to expect everybody to always do right.
We should help people. It's like the while(<>) getting a defined().
--tom