【发布时间】:2020-04-29 13:54:00
【问题描述】:
当我在 C 中打开一个文件时,我得到一个文件描述符,如果我没有读取它的内容,然后有人修改了文件,我会读取旧文件还是新文件? 假设一个文件有很多行,在读取文件时会发生什么情况,有人编辑了开头,这会以某种方式破坏我的文件读取文件的方式吗?
如何在读取文件时不损坏程序?操作系统可以解决这个问题吗?如果我仍然可以读取旧数据,这些数据存储在哪里?
open 的手册页,有一些关于 open 内部的信息,但我不是很清楚。
【问题讨论】:
-
打开的时候肯定删除不成功。
-
@ItachiUchiwa 在 Posix 中,它可能会被删除,但打开的文件仍然存在用于打开它的进程。它刚刚从目录中删除。
-
C 标准库没有文件共享的概念,也没有定义第二次打开同一个文件时应该发生什么。行为取决于实现。
-
在 Windows 中,可以删除打开的文件。