写点什么

QT exe 只允许运行单个

作者:用户10086
  • 2022 年 7 月 22 日
  • 本文字数:660 字

    阅读完需:约 2 分钟

前言

在 qt 项目开发过程中,有部分的程序只允许在一台机器上运行一个程序,不允许同时运行多个,因此 需要使用啊代码来给他做一些限制。


在网上可以搜到很多种使用的方法,我就拿我所使用的一个来举例子,大家感兴趣的话也可以去找找别的方法尝试一下。我所介绍的这个方法在我认为比较容易理解,而且比较简单。


QSystemSemaphore 类他提供了一个 具有计算功能的系统信号量 他的优点在于可以使用多个进程之间


QSystemSemaphore sema("JAMKey",1,QSystemSemaphore::Open);sema.acquire();


acquire() 这个函数可以获取一种资源。在没有资源可用的情况下,会将其进行阻塞处理,直到有资源可以使用 ,然后获取资源并返回调用。


    QSharedMemory mem("SystemObject");
if (!mem.create(1))
{
QMessageBox::information(0, "提示","An instance has already been running.");

sema.release();
return 0;
}
sema.release();
复制代码


create() 可以通过这个函数创建共享内存 向系统申请内存空间,在他不创建的情况下,调用 attach()会失败,这个一定要注意!!!在创建的时候,需要制定共享内存的大小,也就是他的字节数


在这儿使用的含义 如果全局对象已经存在则退出


QMessageBox 我么你可以用这个常用的弹框对他进行提示。以防用户认为他明明打开了为什么没有新的出现。


release 释放掉当前的资源,为了方便别的进程回去他的资源。 注意 :如果是 Unix 系统,会自动释放。 所亦可以写可以不写

总结

今天的更新到此结束,因为这一部分没有特别的熟悉,所以有错误的地方希望大家多多提出意见。

发布于: 1 小时前阅读数: 7
用户头像

用户10086

关注

还未添加个人签名 2022.07.01 加入

一个辣椒爱好者

评论

发布
暂无评论
QT exe只允许运行单个_qt_用户10086_InfoQ写作社区