qt程序进程单例(文件锁的方法)

原理

通过锁定文件,直至程序退出解锁,那么当程序第二次打开的时候检测到文件是锁定的,则退出

使用qt文件锁的方法

请在main函数里面使用,不要单独封装函数,保证锁没有退出,因为函数退出,锁也会跟着退出

#include <QLockFile>
#include <QApplication>//文件名称(随便写)
#define INSTANCE_LOCK "singleApplication"
int main(int argc, char *argv[])
{QApplication a(argc, argv);const QString lock = QDir::homePath() + "/" + INSTANCE_LOCK;QLockFile lockApp(lock);//尝试解锁if (!lockApp.tryLock(200)){qDebug() << "程序已经启动,选择直接退出";return 0;}//程序未启动,继续进行return a.exec();

linux下文件锁定

#include <QApplication>
#include <QDir>#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <iostream># define testApplicaiton "/.cache/testsingle/"
bool checkOnly()
{//singleQString userName = QDir::homePath().section("/", -1, -1);std::string path = (QDir::homePath() + testApplicaiton).toStdString();QDir tdir(path.c_str());if (!tdir.exists()) {bool ret =  tdir.mkpath(path.c_str());qDebug() << ret ;}path += "single";int fd = open(path.c_str(), O_WRONLY | O_CREAT, 0644);int flock = lockf(fd, F_TLOCK, 0);if (fd == -1) {perror("open lockfile/n");return false;}if (flock == -1) {perror("lock file error/n");return false;}return true;
}int main(int argc, char *argv[])
{QApplication a(argc, argv);//尝试解锁if (!checkOnly()){qDebug() << "程序已经启动,选择直接退出";return 0;}//程序未启动,继续进行return a.exec();

几行代码实现c++/qt程序进程单例(文件锁)相关推荐

  1. 用70行代码实现日志分析程序​

    python又一力作,感受python的强大.用70行代码实现日志分析程序 功能介绍:可直接对文本日至进行分组和排序功能,完了输出结果粘贴到excel里就可以直接生成图表,对于排查一些生产环境问题有很 ...

  2. Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息

    Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息 目录 输出结果 实现代码 输出结果 实现代码 # -*- coding: utf-8 -* ...

  3. 代码内容变成图片_网站只剩25行代码,真有程序员“删库跑路”?

    "可能我删了数据才会轻松吧 可能我格了硬盘才会休息吧 可能逃出了公司我就跑到天边 可能我还没找到 那个BUG--" 曾经,有一位程序员,在某个加班的深夜,一边听着<可能否&g ...

  4. java推送微信消息换行_5行代码实现微信小程序模版消息推送 (含推送后台和小程序源码)...

    我们在做小程序开发时,消息推送是不可避免的.今天就来教大家如何实现小程序消息推送的后台和前台开发.源码会在文章末尾贴出来. 其实我之前有写过一篇:<springboot实现微信消息推送,java ...

  5. 一天写多少行代码才算是好程序员?

    点击查看全文 当今时代很多吃瓜群众对程序员的印象都是 而程序员的真实情况却是这样:每天大部分时间都在改代码,写代码,看代码才是我们真实的工作日常,到底每天要写多少行才是好程序员呢? 为了探讨这个问题首 ...

  6. 多隆:淘宝第一行代码撰写者的程序世界

    为什么80%的码农都做不了架构师?>>>    摘要: 他2000年加入阿里巴巴,是淘宝的创始人之一,是阿里内部公认的技术大牛,在阿里内网上他被贴得最多的标签就是"神&qu ...

  7. Java中的程序设计模式--单例与多例

    单例设计模式: 就是指一个类只允许产生一个实例化对象. 分析: 要想只能产生一个实例化对象,就意味着使用者不能在外部使用 new 生成一个实例,即表示该类的构造函数是私有的(貌似C++当中没有私有的构 ...

  8. c语言中如何确保一个程序是单例的_c++单例模式

    前言 在设计模式中,单例模式是最简单的一种.如何确保让一个资源在使用中只能实例化一次呢?如何确保在多线程环境下是线程安全的呢?本文将从最简单的单例到线程安全的单例一一讲解. 一.单线程环境 以下是最起 ...

  9. 使用static代码块实现线程安全的单例设计模式

    实现线程安全的单例设计模式的三种方式: DCL双检查锁机制实现线程安全 使用静态内置类实现线程安全 使用static代码块实现线程安全 -------------------------------- ...

最新文章

  1. “RPC好,还是RESTful好?”
  2. spring mvc绑定对象String转Date解决入参不能是Date的问题
  3. API:互联网是如何在幕后工作的?
  4. java spring配置类_spring 配置 Java配置类装配bean
  5. python 主线程_Python threading多线程模块
  6. linux的启动流程和加载程序
  7. Js toString()方法笔记
  8. 统计整数的各位数字和
  9. php 嵌套函数公式解析,Pyparsing,使用嵌套解析器解析php函数注释块的内容
  10. 在线下单系统php源码,PIMS在线订单管理系统v4.2.9
  11. LoadModule php5_module modules/libphp5.so在httpd.conf中的由来
  12. 背包问题九讲笔记_01背包
  13. 2021年高压电工考试报名及高压电工模拟试题
  14. 前端根据后端数据生成表格 行列合并 指定表头
  15. Cloudera(CDH) 简介和在线安装
  16. C语言完美数单循环,《程序设计基础》题库(50道)
  17. Mac外接显示器调色方法
  18. 卡迈克尔(Carmichael)函数
  19. [Codeforces 940E]Cashback
  20. 如何在word里插入PDF文件/图片

热门文章

  1. Science撤回“天使粒子”论文,曾被视为诺奖级发现,张首晟等4位华人科学家为通讯作者...
  2. 什么是CC攻击?与DDoS攻击有什么区别
  3. 论文阅读《On Building an Accurate Stereo Matching System on Graphics Hardware》(AD Census-双目立体匹配)
  4. 2020年计算机能力挑战赛C/C++初赛题解
  5. myqr库制作二维码
  6. python Django 学习笔记 2020-11-6(input不显示提示信息,日历,datetime类型数据的显示,使用装饰器实现登录限制,文字下划线)
  7. React.js 简介以及一些基本概念
  8. [附源码]Java计算机毕业设计SSM财务管理系统
  9. 中国汽车品牌口碑榜之:--2013年第3季度广州商用车综合口碑排名
  10. java 5只猴子分桃_通俗易懂、简单粗暴得解决猴子分桃问题