Linux上进程向文件写入时删除文件写入会失败吗

 时间:2024-10-23 13:31:55

假设有进程P持续向文件F写入数据,此时把文件F删除,进程P的写入会失败吗?磁盘占用是否会持续增加?为什么?

工具/原料

Linux系统

答案

1、进程P的写入不会失败,磁盘的占用仍然会增加下面小编从理论和实践方面讲一下

Linux上进程向文件写入时删除文件写入会失败吗

实践

1、写个python文件,终端运行当做一个写入的进程(桌面创建好了test_write.txt)

Linux上进程向文件写入时删除文件写入会失败吗
Linux上进程向文件写入时删除文件写入会失败吗

2、过程中删除test_write.txt文件,查看进程是否异常,结果终端正常输出write it once,另外打开一命令行窗口查看进程如下(正常写入:进程的时间在增加表示没有中断)

Linux上进程向文件写入时删除文件写入会失败吗

3、删除txt文件以后,查看一下磁盘占用是否还在持续增加,结果确实增加了(如图)

Linux上进程向文件写入时删除文件写入会失败吗

理论

1、stackoverflow:如果文件被移动(在相同的文件系统中)或重命名,则文件句柄保持打开状态,仍可用于读取和写入文件。如果文件被删除,文件句柄仍然是打开的,仍然可以使用(这不是一些人所期望的)。在最后一个句柄关闭之前,不会真正删除该文件。如果文件被新文件替换,则具体取决于文件。如果文件的内容被覆盖,文件句柄仍然有效并访问新内容。如果现有文件被取消链接并且使用相同名称创建新文件,或者如果使用新文件移动到现有文件上rename(),则它与删除相同(参见上文) - 也就是说,文件句柄将继续引用该文件的原始版本。通常,一旦文件打开,文件就会打开,没有人改变目录结构可以改变它 - 它们可以移动,重命名文件,或者在其位置放置其他东西,它只是保持打开状态。在Unix中,没有删除,unlink()这是有意义的,因为它不一定删除文件 - 只是从目录中删除链接

2、个人简单理解:可能文件系统实现了path到真实资源的一个映射,open操作占有了真实资源的句柄,删除操作会删除path到真实资源的映射,但原有的句柄还在。等所有的句柄都关闭了,文件系统再做真正的删除。具体还得详细地看文件系统的实现代码了。

Linux上进程向文件写入时删除文件写入会失败吗
  • 漫威超级战争凤凰最强上分攻略
  • 用七巧板怎样拼一盏博物馆陈列的台灯?
  • lunix 如何查看 dubbo 指令
  • 招聘数据采集:最简单,最好用,爬一爬采集器
  • 青梅精哪里卖
  • 热门搜索
    安全与健康手抄报内容 关于感恩手抄报内容 我爱我家手抄报内容 节约用水手抄报资料 历史手抄报图片大全 快乐手抄报 垃圾分类的手抄报 最简单的手抄报 语文手抄报内容大全 美德少年手抄报资料