gpt4 book ai didi

C++,如果文件在读取时移动会怎样?

转载 作者:太空狗 更新时间:2023-10-29 21:48:07 25 4
gpt4 key购买 nike

如果 C++ 正在读取一个文件(比如一个包含 20,000 行的 csv 文件)并且在读取到一半时,另一个进程删除了该文件(假设它是一个 ifstream),它会如何表现。

我是否遇到段错误,或者我存储行的 vector 是否只有 10,000 行并且没有错误表明出现问题?

同样,如果我正在通过 ofstream 写入并被删除中断,会发生什么情况?那么,如果中途中断,我的输出文件是否只包含最后 10,000 行?

最佳答案

这取决于操作系统。

如果您使用的是 Unix-y 操作系统,您将继续读取/写入数据,因为删除只是对包含目录和/或 inode 的更新,因此您不会影响文件的数据。

但是,如果文件数据所在的磁盘 block 在您读取时可能被更新的文件重新使用(同样取决于操作系统),那么一旦您完成了文件中的数据,您基本上会读取错误的文件数据缓冲区。

如果您使用的是 Windows,正如 Seth Carnegie 在评论中正确指出的那样,如果打开文件进行阅读,文件会自动被锁定(因此无法删除)。

关于C++,如果文件在读取时移动会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530723/

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