jjzjj

OpenMutex

全部标签

c++ - CreateMutex 和 OpenMutex 返回 NULL

我正在编写一个具有共享内存的应用程序,并正在创建名称上带有适当"Local\"前缀的命名互斥体。但是,每次我调用CreateMutex函数来创建句柄时,我都会得到一个NULL返回值。我什至尝试在那之后调用OpenMutex并获得NULL返回。GetLastError()函数返回6,这意味着ERROR_INVALID_HANDLE。我相信这发生在第一次尝试在任何进程中创建这个命名互斥锁时。我在包含一些MFC组件之后包含了windows.h,并在应用程序的其他地方使用了CMutex;所以我不知道这是否是一个问题。我始终为前两个参数传递NULL和FALSE,并且我使用的是WindowsXP。

windows - CreateMutex() 和 OpenMutex() 返回不同的句柄

我认为这两个函数将返回相同的内核句柄。并且我写了一个测试程序来证明我的观点:在我的程序中,我创建了一个名为“_MYTEST”的内核句柄hHandle1=CreateMutex(NULL,false,_T("_MYTEST"));然后我启动一个线程并使用以下代码在该线程中打开上面的句柄:hHandle2=OpenMutex(MUTEX_ALL_ACCESS,false,_T("_MYTEST"));当我运行程序时,我发现两个返回值不相等!hHandle2的值比hHandle1的值大4。为什么?我的代码有什么问题吗?如果没有,为什么两个值不相等? 最佳答案

c++ - CreateMutex、OpenMutex 和进程同步

我正在尝试执行以下操作:进程A应该使用OpenMutex来查看进程B是否正在运行。进程B应该使用CreateMutex让进程A知道它正在运行。其实很简单...这是怎么回事:运行进程A->它看到进程B没有运行。到目前为止一切顺利。运行进程B->它创建互斥量。再次运行进程A->它看到进程B现在正在运行。还是不错的。我关闭进程B(它也应该关闭互斥量)。运行进程A->它仍然看到进程B正在运行!(OpenMutex不会失败)。我在这里做错了什么??这是我的部分代码://StartofprocessBHANDLEhMutex=::CreateMutex(NULL,TRUE,MY_MUTEX_NAM