windows下如何防止启动两个一样的进程
2016-01-19 23:12
381 查看
方法用互斥量,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中可以使用文件的方式来判断
方法如下:
#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中可以使用文件的方式来判断
相关文章推荐
- hdu1412 {A} + {B}
- 【算法】M-01主项定理Master Method
- 批量处理数据的一些经验
- oracle 中的dual表简介与用法
- Kettle
- 手动下载 Xcode 文档
- Android属性动画
- Android6.0 SystemUI Keyguard 简介
- 一点思考
- 德玛啦啦啦
- C#发送邮件Email
- 本地缓存机制
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- HDU 2199 Can you solve this equation?(简单二分)
- spring搭建redis集群
- HDU 2199 Can you solve this equation?(简单二分)
- [读书笔记]C#学习笔记三: C#类型详解..
- 6.Foundation Kit介绍 部分二
- Linux驱动开发之主设备号找驱动,次设备号找设备
- 实用工具——【1】java程序生成Windows安装程序