gpt4 book ai didi

c++ - 如果我打开文件后有人覆盖该文件会怎样?

转载 作者:行者123 更新时间:2023-12-01 19:31:59 25 4
gpt4 key购买 nike

当我在C中打开一个文件时,我得到一个文件描述符,如果我没有读取它的内容,然后有人修改了该文件,我会读取旧文件还是新文件?假设一个文件有很多行,在读取文件时,有人编辑开头会发生什么,这会以某种方式破坏我的文件读取文件的方式吗?

读取文件时程序如何不被损坏?操作系统可以解决这个问题吗?如果我仍然可以读取旧数据,这些数据存储在哪里?

open 的手册页,有一些关于 open 内部的信息,但对我来说不是很清楚。

最佳答案

C 语言标准不承认其他进程的存在,也不指定它们与程序之间的交互(C++ 也不这样做)。该行为取决于操作系统和/或文件系统。

通常,最安全的假设是文件操作不是原子操作,因此在另一个进程正在编辑文件时访问文件将是竞争条件的一个示例。有些系统可能会提供一些更严格的保证。

尝试避免问题的一般方法是文件锁定。标准 C 库没有用于文件锁定的 API,但多任务操作系统通常有。

关于c++ - 如果我打开文件后有人覆盖该文件会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59706673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com