CreateMutex
The CreateMutex function creates or opens a named or unnamed mutex object.
HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName); 在调用这个函数的时候,程序会以lpMutexAttributes和bInitialiOwner参数在当前的程序上下文中创建一个lpName指示的名字的Mutex,如果创建成功,程序返回新创建的mutex对象的handle,如果创建失败,返回NULL,用户可以调用GetLastError函数获取错误代码。如果lpName指示的这个mutex对象已经存在(程序已经存在运行实例),则函数返回已经存在的该mutex对象的句柄,调用GetLastError会得到ERROR_ALREADY_EXISTS的错误。
那么我们程序要做的就是创建这个mutex对象,检测错误代码,若是ERROR_ALREADY_EXISTS,则表明程序已经运行。
这是代码:
CreateMutex(NULL,TRUE,"TestMutex"); DWORD lastError=GetLastError(); if(ERROR_ALREADY_EXISTS==lastError) { MessageBox(NULL,"An instance of thie program already exists!","Information",MB_OK); return 1; }
posted on 2009-05-17 16:45 悟山 阅读(642) 评论(2) 编辑 收藏 引用
我怎么记得Mutex是不能跨进程的,Semaphore才可以。 回复 更多评论
Windows下可以,只用于线程的叫critical_section 回复 更多评论
Powered by: C++博客 Copyright © 悟山