1. 程式人生 > >windows下如何防止啟動兩個一樣的程序

windows下如何防止啟動兩個一樣的程序

方法用互斥量,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中可以使用檔案的方式來判斷