[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: read() on a deleted file

--On 3 January 2008 16:00:22 +0530 Fasihullah Askiri <fasihullah askiri gmail com> wrote:

I have a doubt regarding the behaviour of read() on an ext3
filesystem. To elucidate my doubts, I wrote a small program opens a
file and reads one byte at a time and sleeps for a while. I deleted
the file while the read was still in progress and I noticed that the
read still succeeds. How does this work? Does the kernel not free the
inode when the file is deleted but there is a pending read? To check
this, instead of deleting, I tried shred-ding the file, the read still
gets the correct data.

That's standard UNIX behaviour. The file exists on disk until all
references to it have disappeared (references including the open
file handle). All you do by typing "rm" is delete a reference/link to
it from a particular directory, not (necessarily) delete the file.
That's why the system call is called "unlink".


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]