最近想搭建一个tftp客户端服务端, 结果呢, 在同一台电脑上, 发现只有一个tftp能运行。 开启了一个tftp, 再去双击同一个tftp, 发现还是只有一个进程在那儿。我不禁想, 这是如何实现的? 其实我也不知道, 后来上网后, 明白了原理, 下面我自己来实现一下, 加深理解。
写个小程序:
#include <windows.h>
int main()
{
HANDLE hMutex = CreateMutex(NULL, FALSE, "test");
Sleep(10000); //让主线程睡眠10秒后再退出
return 0;
}
我们编译连接一下这个程序, 假设生成了test1.exe
下面我们继续写程序:
#include <windows.h>
#include <iostream.h>
int main()
{
HANDLE hMutex = CreateMutex(NULL, FALSE, "test");
if(hMutex)
{
if(ERROR_ALREADY_EXISTS == GetLastError())
{
cout << "already exist" << endl;
}
else
{
cout << "not exist" << endl;
while(1);
}
}
return 0;
}