簡體   English   中英

如何在C ++中寫入文件而不鎖定它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM