实现进程单例运行的几种方法

这篇博客介绍了如何在Qt环境下确保应用以单例模式运行,防止多次启动。通过QSystemSemaphore和QSharedMemory检查进程状态,或者利用QLocalSocket监听来保持唯一实例。示例代码展示了两种实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        这几天接手同事的一个代码,发现一个应用点击多次会弹出多个,但只有一个是真正在起作用;

说到这里,感觉应该看下tasklist,究竟是启动了多个,还是其他的没被顶掉。当时忘了查了,只是

仓促的打了补丁,现在贴下代码,做个笔记;

       有需要的同学可以直接拿去用:

开发环境:

        Qt 5.1.0

        高版本或许会出现小问题,没有测试过;


在此之前,先谈一下思路;

        要实现单例,就需要知道目前进程的状态,如果存在,那么不允许同ID的process重复启动;

1.使用QSystemSemaphore  lib;可在Create()失败时弹窗并退出ghost程序;

#include <QCoreApplication>
#include <QTextCodec>
#include <QSystemSemaphore>
#include <QSharedMemory>
#include <QMessageLogger>


#include "thread_datarecv.h"
#include "thread_datasend.h"
#include "com_config.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //设置程序使用字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值