这几天接手同事的一个代码,发现一个应用点击多次会弹出多个,但只有一个是真正在起作用;
说到这里,感觉应该看下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);
//设置程序使用字