When does rm remove open files?

Particularly, I want to know what happens when I rm an open file and don't explicitly kill the process holding the file descriptor to that file. Will the file be removed when the system is shut down?


Solution 1:

Basically, yes - whenever the process holding it open dies. Nothing "magical" happens at that point. Just like a directory entry for the file is a "hard link" to the blocks that contain that file's data, so is an open file handle. If there is no directory entry and no open file handle then the blocks are free to be reused. This means that even if you don't do a clean shutdown (eg. yank the power cord) the file will still be deleted - it was "deleted" when you ran rm, only its blocks were not immediately available for reuse.