[英]How to write to file in C++ without locking it?
Windows 7中的C ++。在寫入日志文件時,有時會設置斷點,否則程序會卡在某些東西上。 當我嘗試從其他程序中查看我的日志文件時,它說“文件無法打開,因為它正在被另一個進程使用”。 是的,沒錯,但是我與其他程序一起工作,這些程序仍然允許在日志文件寫入日志文件時進行讀取,因此我知道這是可能的。 嘗試_fsopen並解鎖文件,但未成功。
FILE* logFile;
//fopen_s(&logFile, "log.log", "w");
logFile = _fsopen("log.log", "w", _SH_DENYNO);
if (!logFile)
throw "fopen";
_unlock_file(logFile);
如果您以完全共享模式打開了日志文件,則仍然會阻止其他文件打開以進行獨占訪問或拒絕寫入。
似乎第二個程序需要比兼容更多的訪問 。
另外,我猜您只想追加到日志,請使用模式“ a”而不是“ w” 。
最后, 除非您_lock_file
在同一文件_lock_file
_unlock_file
否則請不要調用_unlock_file
。
有一種方法可以執行您想要的操作:
無需任何訪問即可打開文件,然后使用“ 機會鎖定” 。
Raymond Chen的博客The Old New Thing也有一個很好的例子: http : //blogs.msdn.com/b/oldnewthing/archive/2013/04/15/10410965.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.