如何读取文本文件已在使用(Windows的C ++)(How to read a text file

2019-10-20 15:51发布

我有一个创建使用文本日志文件的应用程序std::ofstream使用std::ofstream::app来创建它。 此应用程序经常写日志,有时只,单位为毫秒。

我想写第二个应用程序,它读取并分析此日志文件,而第一个应用程序还在写吧

我有一定的工作代码,使用ifstream ,加载和处理一个独立的文本日志文件,但是当我尝试使用它当前正在写入与文本日志文件验证码失败“的进程无法访问,因为它的文件正由另一过程“。

我如何调整我的日志读取器,让我读出当前正在写入文本文件(记事本+ +是能够在同一个文件呢!)?

Answer 1:

在Windows中可以传递第三个参数到流构造/ open ,允许共享,例如,

std::ofstream of("path", of.app, _SH_DENYNO);

(int)ios_base::_Openprot默认情况下,通过这是一个enum设置为_OPENPROT ,它的定义是:依次_SH_DENYNO所以应该不指定标志已经工作,我真的不知道为什么它不会在你的情况,你尝试过继VS的定义或调试的代码?

参考:

http://msdn.microsoft.com/en-us/library/y1et11xw(v=vs.110).aspx

http://msdn.microsoft.com/en-us/library/kexhtshc(v=vs.110).aspx



文章来源: How to read a text file that is already in use (Windows C++)