C++中让程序只启动一个实例的方法主要有以下几种:
互斥体实现方式
主要利用如下函数实现:
1 2 3 4 5 6
| 函数原型: HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes,//必须为NULL BOOL bInitialOwner, //表示mutex的范围是本线程还是全系统 LPCTSTR lpName //互斥量的名字 );
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| bool checkMyselfExist()//如果程序已经有一个在运行,则返回true { HANDLE hMutex = CreateMutex(NULL, FALSE, L"DevState"); if (hMutex && (GetLastError() == ERROR_ALREADY_EXISTS)) { CloseHandle(hMutex); hMutex = NULL; return true; } else{ return false; } }
int main() { if (checkMyselfExist()){ cout << "program has been runnin" << endl; } else{ cout << "start running" << endl; } system("pause");
return 0; }
|
参考链接
- C++实现程序单实例运行的两种方式,by 倚剑问天.
- C / C++ 如何让程序只启动一个实例,by C你.