Re: 'Undeleting' an open file

From: Ian Campbell
Date: Fri Oct 07 2005 - 09:30:49 EST


On Fri, 2005-10-07 at 16:14 +0200, Giuseppe Bilotta wrote:
> On Wed, 5 Oct 2005 23:05:34 +0200 (CEST), Bodo Eggert wrote:
>
> > Files are deleted if the last reference is gone. If you play a music file
> > and unlink it while it's playing, it won't be deleted untill the player
> > closes the file, since an open filehandle is a reference.
>
> BTW, I've always wondered: is there a way to un-unlink such a file?

Access via /proc/PID/fd/* seems to work:

$ echo "Hello World" > testing
$ exec 10>>testing
$ rm testing
$ ls -l /proc/self/fd/
total 5
lrwx------ 1 icampbell icampbell 64 Oct 7 15:28 0 -> /dev/pts/9
lrwx------ 1 icampbell icampbell 64 Oct 7 15:28 1 -> /dev/pts/9
l-wx------ 1 icampbell icampbell 64 Oct 7 15:28 10
-> /home/icampbell/testing (deleted)
lrwx------ 1 icampbell icampbell 64 Oct 7 15:28 2 -> /dev/pts/9
lr-x------ 1 icampbell icampbell 64 Oct 7 15:28 3 -> /proc/31390/fd/
$ cat /proc/self/fd/10
Hello World
$

Ian.
--
Ian Campbell
Current Noise: Rotting Christ - In Domine Sathana

I may not be totally perfect, but parts of me are excellent.
-- Ashleigh Brilliant

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/