On Sat, 01 Apr 2000, Tadeusz Bak wrote:
> Hi all,
>
> Sorry, my problem is probably not Debian specific... I tried to run under
> slink with the 2.0.36 kernel the following program:
>
> #define RUN "/tmp/.rem.run"
> #include <stdio.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <fcntl.h>
> #include <unistd.h>
> main()
> {
> open(RUN, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
> printf("File created\n");
> sleep(30);
> unlink(RUN);
> printf("File removed\n");
> sleep(30);
> printf("Finish\n");
> }
>
> After the message "File created" I can see that there is a file .rem.run
> in /tmp directory. After "File removed" that file disappears. But
> according to unlink man page it should exist up to the message "Finish"
> because it is not closed. Only after terminating the program kernel
> closes all open files and .rem.run should be removed. Does anybody have
> an idea what's going on here? Thanks!
>
The thing that happens is that the file name is deleted
from the directory, but its inode is kept until the program closes the
descriptor.