My Dllは "Sample.txt"ファイルにデータを書き込みます。2つのプロセスから同じファイルに書き込みが失敗します
Dllが2つのプロセスによって読み込まれる場合、Sample.txtは両方のプロセスによって書き込まれます。
この場合、最初にファイルに書き込むプロセスだけが書き込みを続けます。私はそのSample.txtの2番目のプロセスのデータを見ることができませんでした。私はプロセス間の同期のためにMutexを使用します。
私のコードは、私がSample.txtをでのみ最初のプロセスのIDを見ることができ、以下のように
HANDLE MLock = CreateMutex(NULL,FALSE,L"MLock");
WaitForSingleObject(MLock,INFINITE);
ofstream fp;
fp.open("Sample.txt",ios::app);
fp << GetCurrentProcessID();
fp.close();
ReleaseMutex(MLock);
です。最初のプロセスが強制終了された場合にのみ、2番目のプロセスデータが書き込まれます。どこで間違ったんですか?
注:この問題は、いくつかのマシンでのみ発生します。
あなたはあなたの例からエラー処理を放出しましたか? 'CreateMutex'は' NULL'を返すことができます。 – Default
また、WaitForSingleObjectは異なる結果も返すことができます。 Mutexesを 'CreateMutex'でどのように使うかについては、[here](ここ[https://msdn.microsoft.com/en-us/library/windows/desktop/ms686927(v = vs.85).aspx]を参照してください。 'WaitForSingleObject' – Default
しかし、代わりに[' lock_guard'](http://en.cppreference.com/w/cpp/thread/lock_guard)を使うことをお勧めします。 – Default