在写一些与硬件打交道的程序时,最让人担心的是程序被启动多次,这样不仅浪费系统资源,而且很容易造成数据获取错误。
下面介绍一种VC++中很简单的方法来避免同一程序被启动多次。本方法用到了互斥量。互斥量是操作系统中的一个很重要的技术。它用于独占系统硬件或软件资源,避免外在程序的干扰。
具体代码如下:
//判断程序是否运行第二次
HANDLE hMutex = NULL;
TCHAR* lpszName = "TestMutex";
hMutex = CreateMutex(NULL,FALSE,lpszName);
DWORD dwRet=GetLastError();
if(hMutex)
{
if(ERROR_ALREADY_EXISTS == dwRet)
{
//some warnings here...
CloseHandle(hMutex);
return -1;
}
}