打开文件句柄后删除的文件会发生什么情况?
自从发现可以在MPlayer中播放视频文件并将其一直播放到最后时,我一直在想这个问题。它从哪里提取数据?它仍然来自硬盘吗?删除文件后,文件是否已复制到RAM?
如果它仍在硬盘驱动器上,那么当程序运行时从本质上未分配的空间读取内容时,如果我填满文件系统会发生什么情况?如果将其缓冲在RAM中,则刷新缓冲区会怎样?
如果该文件位于NFS共享上,该怎么办–它存储在服务器上吗?(这不是安全隐患吗?DoS通过大量打开的远程文件句柄进行DoS吗?)
做一个lsof -n |grep '(deleted)'
有时产生有趣的结果; 如果我要升级换出共享库文件的程序包,则运行已在使用这些库的程序仍然可以使用它们,就好像什么都没有改变一样。
额外的问题:在这种情况下,有什么方法可以使数据从死角中恢复过来吗?