当前位置: 技术问答>linux和unix
怎样使程序只运行一个实例
来源: 互联网 发布时间:2015-11-14
本文导语: 怎样使程序在unix/linux环境下只运行一个实例? 在windows环境下可以使用: 方法一: 在IninInstance()函数加入如下代码: HANDLE hObject = CreateMutex(NULL,FALSE,"SingleInstance"); if(GetLastError() == ERROR_ALREADY_EXISTS)...
怎样使程序在unix/linux环境下只运行一个实例?
在windows环境下可以使用:
方法一:
在IninInstance()函数加入如下代码:
HANDLE hObject = CreateMutex(NULL,FALSE,"SingleInstance");
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hObject);
AfxMessageBox("程序已经运行!");
return FALSE;
}
方法二,使用编译器来实现,较复杂一点
使用#pragma data_seg编译指令,共享一个全局变量
在windows环境下可以使用:
方法一:
在IninInstance()函数加入如下代码:
HANDLE hObject = CreateMutex(NULL,FALSE,"SingleInstance");
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hObject);
AfxMessageBox("程序已经运行!");
return FALSE;
}
方法二,使用编译器来实现,较复杂一点
使用#pragma data_seg编译指令,共享一个全局变量
|
用文件的咨询锁。参考APUE。
|
文件锁,这是标准用法
|
方法多了,文件锁,信号灯,pid文件 ...
|
关于down掉的这些异常,我以前是把信号接管了,然后在里面,嘿嘿,把锁解开