方法用互斥量,Mutex来解决,因为Mutex有进程互斥的作用,而临界区则没有进程互斥功能。
方法如下:
#include <iostream>
using namespace std;
#include <windows.h>
int main(int argc, char** argv)
{
HANDLE handle = CreateMutex(NULL, TRUE, "daserver");
if ((GetLastError() == ERROR_ALREADY_EXISTS) || (NULL == handle))
{
return -1;
}
getchar();
return 0;
}
注意上面的代码,不能仅仅判断handle句柄是否为NULL,因为handle如果不存在,并不是等于NULL,是个范围从0开始的一个范围,而NULL是0,所以要进行GetLastError的判断。
linux中可以使用文件的方式来判断