QT exe 只允许运行单个
前言
在 qt 项目开发过程中,有部分的程序只允许在一台机器上运行一个程序,不允许同时运行多个,因此 需要使用啊代码来给他做一些限制。
在网上可以搜到很多种使用的方法,我就拿我所使用的一个来举例子,大家感兴趣的话也可以去找找别的方法尝试一下。我所介绍的这个方法在我认为比较容易理解,而且比较简单。
QSystemSemaphore 类他提供了一个 具有计算功能的系统信号量 他的优点在于可以使用多个进程之间
QSystemSemaphore sema("JAMKey",1,QSystemSemaphore::Open);
sema.acquire();
acquire() 这个函数可以获取一种资源。在没有资源可用的情况下,会将其进行阻塞处理,直到有资源可以使用 ,然后获取资源并返回调用。
复制代码
create() 可以通过这个函数创建共享内存 向系统申请内存空间,在他不创建的情况下,调用 attach()会失败,这个一定要注意!!!在创建的时候,需要制定共享内存的大小,也就是他的字节数
在这儿使用的含义 如果全局对象已经存在则退出
QMessageBox 我么你可以用这个常用的弹框对他进行提示。以防用户认为他明明打开了为什么没有新的出现。
release 释放掉当前的资源,为了方便别的进程回去他的资源。 注意 :如果是 Unix 系统,会自动释放。 所亦可以写可以不写
总结
今天的更新到此结束,因为这一部分没有特别的熟悉,所以有错误的地方希望大家多多提出意见。
版权声明: 本文为 InfoQ 作者【用户10086】的原创文章。
原文链接:【http://xie.infoq.cn/article/648f71b7a71d22822322eed2a】。文章转载请联系作者。
评论