CreateMutex,OpenMutex和Process sync

Sha*_*ish 3 c++ windows mutex

我正在尝试执行以下操作:

进程A应该使用OpenMutex来查看进程B是否正在运行.

进程B应该使用CreateMutex让进程A知道它正在运行.其实很简单......

这是怎么回事:

  1. 运行进程A - >它看到进程B没有运行.到现在为止还挺好.
  2. 运行进程B - >它创建互斥锁.
  3. 再次运行进程A - >它看到进程B正在运行.还好.
  4. 我关闭进程B(也应该关闭互斥锁).
  5. 运行进程A - >它仍然看到进程B正在运行!(OpenMutex不会失败).

我在这做错了什么?

这是我的代码的一部分:

// Start of process B
HANDLE hMutex = ::CreateMutex(NULL, TRUE, MY_MUTEX_NAME);
MessageBox(NULL, _T("PROCESS B !"), _T("TEST"), 0); 
CloseHandle(hMutex);
// End of process B


// Start of process A
HANDLE hMutex = ::OpenMutex(SYNCHRONIZE, FALSE, MY_MUTEX_NAME);
if(hMutex != NULL)
{
   MessageBox(NULL, _T("PROCESS B is alive !"), _T("TEST"), 0); 
}
CloseHandle(hMutex);
// End of process A
Run Code Online (Sandbox Code Playgroud)

Per*_*est 5

在调用OpenMutex以释放互斥锁的引用计数后,必须在进程A中关闭互斥锁,以便系统可以删除它.请参考MSDN."当它的最后一个句柄被关闭时,互斥对象就会被破坏."

有一个工作示例这里