从两个进程中读写相同的文件

Read/write same file from 2 processes

本文关键字:读写 文件 进程 两个      更新时间:2023-10-16

我有一个关于阅读文本文件的问题。假设我正在读取一个文本日志文件,该文件正在被其他进程不断写入。如果在我读取文件的同时,另一个进程试图写入该文件,会发生什么?我的程序会崩溃吗?(我以只读模式打开文件)

如果上面的场景导致崩溃,"tail -f"命令是如何工作的?

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

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

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

让我们假设你能做到这一点。

您将打开文件以供阅读。

如果你试图在别人写作的同时阅读,那完全没问题。唯一的问题是,如果您试图读取写入器同时正在写入的块。在这种情况下,你得到的数据是不可预测的,但你应该能够读取。

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