【问题标题】:How to write to file in C++ without locking it?如何在不锁定文件的情况下用 C++ 写入文件?
【发布时间】:2014-11-29 15:31:10
【问题描述】:

C++ 在 Windows 7 中。 在写入日志文件时,我有时会设置断点,或者程序会卡在某处。当我尝试从另一个程序中查看我的日志文件时,它会显示“该文件无法打开,因为它正在被另一个进程使用”。那是真的,但是我使用过其他程序,它们仍然允许在写入日志文件时从日志文件中读取,所以我知道这应该是可能的。尝试 _fsopen 并解锁文件,但没有成功。

FILE* logFile;
//fopen_s(&logFile, "log.log", "w");
logFile = _fsopen("log.log", "w", _SH_DENYNO);

if (!logFile)
    throw "fopen";

_unlock_file(logFile);

【问题讨论】:

    标签: c++ windows file file-io locking


    【解决方案1】:

    如果您以完全共享模式打开日志文件,其他人仍无法以独占访问或拒绝写入方式打开。

    似乎第二个程序想要more access than would be compatible

    另外,我猜你只想追加到日志,use mode "a" instead of "w"

    最后,do not call _unlock_file unless you called _lock_file on the same file previously


    有一种方法可以做你想做的事:

    在没有任何访问权限的情况下打开您的文件,然后使用Opportunistic Locks

    Raymond Chen 的博客 The Old New Thing 也有一个很好的例子:http://blogs.msdn.com/b/oldnewthing/archive/2013/04/15/10410965.aspx

    【讨论】:

      猜你喜欢
      • 2015-04-13
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多