在进程用c ++编写时读取进程中的文件

时间:2010-11-24 20:48:45

标签: c++

我有一个文件随着时间的推移而增加,并且需要在没有任何竞争条件的情况下读取文件或在Windows上的C ++中的其他进程中读取文件。

给出了一个文件,我没有空间可以玩它。我唯一能做的就是优雅地阅读它。

你有什么想法很好地处理这个案子吗?

TIA

2 个答案:

答案 0 :(得分:0)

在Win32中,您必须确保每个编写器至少打开读取共享访问权限,并且每个阅读器至少打开共享访问权限打开该文件。如果您有> 1个读者或> 1个作家,则需要进一步分享。

请参阅此处了解CreateFile个文档,dwShareMode参数。

答案 1 :(得分:0)

您几乎肯定需要使用CreateFile(在两个进程中)才允许共享文件。如果编写应用程序以独占共享模式打开文件并使其保持打开状态,则阅读应用程序将无法打开该文件。

从那里开始,防止竞争条件相当直截了当:每个进程通常会使用LockFileLockFileEx锁定文件的一部分,以便在使用数据时进行独占访问在该文件的该部分。一般来说,你希望保持这段时间尽可能短,所以你将尽可能快地锁定部分,读/写和解锁(即,如果你能避免它,不做任何其他事情) )。