2010-11-24 169 views
0

我有一个文件增加了时间,并且需要在没有任何竞争条件或Windows上的C++的另一个进程中读取文件。读取进程中正在写入的进程中的文件C++

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

你有什么想法来处理这种情况吗?

TIA

+0

C或C++?你的主题是C,你的关键字是C++,你的身体提到了“...... C++过程......”,这根本就没有意义。 – 2010-11-24 20:51:26

回答

0

在Win32中你必须确保每一个作家打开文件,其中至少读共享访问,每个阅读器打开文件,其中至少写共享访问。如果您拥有> 1个阅读器或> 1个作者,则需要进一步共享。

请参阅CreateFile文档,dwShareMode参数。

0

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

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

+0

我无法在写入过程中使用CreateFile,因为在应用程序中创建和附加文件。我可以只在读取过程中使用CreateFile和LockFile(Ex)来保证在没有赛车的情况下? – 2010-11-24 23:32:41

相关问题