簡體   English   中英

來自兩個進程的同一文件寫入失敗

[英]write fails in same file from two processes

我的Dll將數據寫入文件“ Sample.txt”。

如果Dll由兩個進程加載,則兩個進程將寫入Sample.txt。

在這種情況下,只有首先寫入文件的過程才會繼續寫入。 我在該Sample.txt中看不到第二個進程的數據。 我使用Mutex在進程之間進行同步。

我的代碼如下

HANDLE MLock = CreateMutex(NULL,FALSE,L"MLock");
WaitForSingleObject(MLock,INFINITE);
ofstream fp;
fp.open("Sample.txt",ios::app);
fp <<  GetCurrentProcessID();
fp.close();
ReleaseMutex(MLock);

我只能在Sample.txt中看到第一個進程的ID。 僅當第一個進程被殺死時,才會寫入第二個進程數據。 我要去哪里錯了?

注意:僅在幾台計算機上會出現此問題。

嘗試這個:

HANDLE MLock = CreateMutex(NULL,FALSE,L"MLock");
if (NULL == MLock)
      MLock = OpenMutex(MUTEX_ALL_ACCESS,FALSE,L"MLock");

if (NULL == MLock){
   // error return 
}

WaitForSingleObject(MLock,INFINITE);
//...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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