我正在尝试执行以下操作:
进程 A 应该使用 OpenMutex 来查看进程 B 是否正在运行。
进程 B 应该使用 CreateMutex 让进程 A 知道它正在运行。其实很简单...
会发生什么:
- 运行进程 A -> 它看到进程 B 没有运行。到现在为止还挺好。
- 运行进程 B -> 它创建互斥体。
- 再次运行进程 A -> 它看到进程 B 现在正在运行。还好。
- 我关闭了进程 B(它也应该关闭互斥锁)。
- 运行进程 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