从2个进程读/写相同的文件

时间:2014-05-02 04:22:00

标签: c++ file-io synchronization tail

我有一个关于阅读文本文件的问题。 考虑一下我正在阅读一个文本日志文件,该文件由其他一些进程连续写入。 如果其他进程尝试在读取文件的同时准确写入文件,会发生什么。我的程序会崩溃吗? (我以只读模式打开文件)

如果上述情况导致崩溃," tail -f"命令有效?

每次尝试阅读时锁定文件都是一个很好的解决方案吗?

实际上我有一个使用wxTextFile类来阅读的程序。默认情况下,wxTextFile以read/write模式打开文件,在某些情况下,我的程序崩溃了。因此,如果我使用某些C函数并以只读模式打开文件,它是否保证程序不会崩溃(如果有时读取某些乱码值就可以了。)

1 个答案:

答案 0 :(得分:2)

你的问题有点/完全取决于系统。首先,您需要一个允许多个读者/单个编写者的系统。大多数系统支持这一点,因此它在很大程度上是一个理论上的障碍。

让我们假设您可以这样做。

您可以将文件打开以供阅读。其他一些过程可以写作。

如果你试着在别人写作的同时阅读,那就完全没问题了。唯一的问题是如果您正在尝试读取作者正在同时写的块。在这个原因中,您获得的数据是不可预测的,但您应该能够阅读。

简而言之,同时读取和写入本身不会导致程序崩溃。