Col*_*acX 2 c++ windows file-io locking file
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);
Run Code Online (Sandbox Code Playgroud)
如果您使用完全共享模式打开了日志文件,则其他人仍然无法打开以进行独占访问,或者使用拒绝写入.
似乎第二个程序需要比兼容更多的访问权限.
另外,我猜你只想附加到日志,使用模式"a"而不是"w".
最后,除非您之前调用过同一个文件,否则不要调用_unlock_file_lock_file.
有一种方法可以做你想要的事情:
无任何访问权限打开文件,然后使用机会锁.
Raymond Chen的博客The Old New Thing也有一个很好的例子:http://blogs.msdn.com/b/oldnewthing/archive/2013/04/15/10410965.aspx
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |