最近想搭建一个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;
}
编译连接, 假设生成了test2.exe. &nb

本文介绍了如何确保程序在同一台电脑上仅运行一个实例,通过创建互斥对象来实现进程间的同步。作者以tftp客户端服务端为例,编写小程序并进行实验,详细解释了程序如何检测自身是否已运行,从而防止多个实例同时启动。
1万+

被折叠的 条评论
为什么被折叠?



