繁体   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