【Qt学习】10 利用QSharedMemory实现单例运行
问题
让应用程序只有一个运行实例
QSharedMemory除了可以完成进程间通信,还可以实现应用程序单例化。
解法
首先,看看QSharedMemory的几个函数:
1、QSharedMemory(const QString &key, QObject *parent = Q_NULLPTR)构造函数
该构造函数为给定的parent指针构造共享内存对象,并以key作为该对象的键值。
2、bool create(int size, AccessMode mode = ReadWrite) 函数
该函数为标识了键值key的共享内存对象创建内存空间。size是向系统申请的内存空间大小(即字节数),存取方式mode 默认为ReadWrite。
3、bool attach(AccessMode mode = ReadWrite) 函数
该函数将进程和标识了键值key的共享内存进行绑定。如果未调用create申请共享内存空间,则无法调用attach进行绑定。返回false。
方法一、利用共享内存不能重复Create。
代码如下。
#include "mainwindow.h"
#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);QSharedMemory *sharedMemory = new QSharedMemory(QString("Single.exe"));if (sharedMemory->create(1)){MainWindow w;w.show();return a.exec();}else{qDebug()<<"Has running";QMessageBox::information(0, "提示", "程序已运行!");}delete sharedMemory;sharedMemory = NULL;
}
效果:
方法二、未创建共享内存,不能Attach。
#include <QApplication>
#include <QSharedMemory>
int main(int argc, char *argv[])
{//通过共享内存,让程序只产生一个运行实例QSharedMemory shared("MainWindow.exe");//该共享内存键值为MainWindow.exeif(shared.attach(QSharedMemory::ReadOnly))//利用attach无法绑定未申请内存空间的特点判断该应用程序是否唯一{return 0;//非唯一,结束程序运行}shared.create(1);//创建共享内存,空间大小为1字节QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
参考:
https://blog.csdn.net/qq_42113801/article/details/113957610
相关文章:
【Qt学习】10 利用QSharedMemory实现单例运行
问题 让应用程序只有一个运行实例 QSharedMemory除了可以完成进程间通信,还可以实现应用程序单例化。 解法 首先,看看QSharedMemory的几个函数: 1、QSharedMemory(const QString &key, QObject *parent Q_NULLPTR)构造函数 该构造函数…...
FPGA应用于图像处理
FPGA应用于图像处理 FPGA(Field-Programmable Gate Array)直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件,具有高度的灵活性,可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…...
vscode python 无法引入上层目录解决
在vscode 中.vscode 配置如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurati…...
[开发|java] java list 取某个属性最大的项
示例代码: import java.util.*;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public int getAge() {return age;} }public class Main {public static void main(String[] args) {List<Person…...
关闭浏览器的跨域校验
首发博客地址 问题描述 当你访问资源失败,并遇到以下类似提示时: Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…...
USRP 简介,对于NI软件无线电你所需要了解的一切
什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发,被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…...
RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析
1.RTE_Driver驱动框架 RTE_Driver代表"Run-Time Environment Driver",是Keil MDK(Microcontroller Development Kit)中的一个概念。Keil MDK是一种用于嵌入式系统开发的集成开发环境,提供了开发、编译、调试等一系列工具…...
ImportError: Cannot load dynamic library. Did you compile LSD?
1、问题描述 >>> import pylsd2 Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/data/data/wangzy-p-wangzy-p3-volume-pvc-0fee40a7-7013-49b4-8cfb-b4ab0394165b/.conda/envs/paddle/lib/python3.8/sit…...
音频应用编程
目录 ALSA 概述alsa-lib 简介sound 设备节点alsa-lib 移植编写一个简单地alsa-lib 应用程序一些基本概念打开PCM 设备设置硬件参数读/写数据示例代码之PCM 播放示例代码值PCM 录音 使用异步方式PCM 播放示例-异步方式PCM 录音示例-异步方式 使用poll()函数使用poll I/O 多路复用…...
软件测试/测试开发丨Python 学习笔记 之 链表
点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续,利用CPU的机制࿰…...
Matlab 使用经验分享(常用函数介绍;矩阵常见计算)
Matlab 使用经验分享 大家好!最近有很多朋友询问我关于 Matlab 的使用,于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说,Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么,…...
软件工程(十七) 行为型设计模式(三)
1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…...
在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答
您可以通过集简云数据流程,将语聚AI助手集成到抖音视频评论、抖音私信,实现自动回复用户视频评论、私信问答,大大提升账号互动与运营效率。 效果如下: 自动化流程: ● 抖音普通号评论对接语聚AI(点击可一…...
pyqt5-快捷键QShortcut
import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *""" 下面示例揭示了,当关键字绑定的控件出现的时候,快捷键才管用, 绑定的控件没有出现的时候快捷键无效 """…...
匿名函数( lambda 表达式)
在 C 中,匿名函数也被称为 lambda 表达式。C11 引入了 lambda 表达式,使得在需要函数对象(函数符)的地方可以使用匿名函数来代替。 lambda 表达式的基本语法如下: [capture list] (parameter list) -> return typ…...
基于SSM的汽车维修管理系统——LW模板
摘要 随着人们生活水平的不断提高,私家车的数量正在逐年攀升。这带动了汽车维修行业的发展。越来越多的汽车维修厂如雨后春笋般涌现。同时,维修厂的业务操作产生了庞大的数据,这给汽车维修厂工作人员的数据管理提出了新的要求,他们…...
Ceph的纠删码特性 EC(Erasure Code)代码流程
从GitHub上Clone Ceph项目,我是基于(ceph version 12.2.11 luminous 版本)的代码来分析的 一、EC(Erasure Code)是什么? Ceph的纠删码特性EC:将写入的数据分成N份原始数据,通过这N份原始数据计算出M份效验…...
盘点那些国际知名黑客(上篇)
电影中的黑客仅靠一部电脑就可以窃取别人的信息,利用自己高超的技术让公司甚至国家都胆战心惊。“黑客”原指热心于计算机技术、水平高超的电脑高手,但逐渐区分为黑帽、白帽、灰帽。这些术语源自美国流行文化的老式西部电影,其中主角戴白色或…...
机器学习基础12-Pipeline实现自动化流程处理(基于印第安糖尿病Pima 数据集)
有一些标准的流程可以实现对机器学习问题的自动化处理,在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。 如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择…...
Ansible学习笔记15
1、roles:(难点) roles介绍: roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用他们的一种机制。 假设我们要写一个playbo…...
Fish-Speech 1.5应用案例:从播客配音到语音提醒,实战分享
Fish-Speech 1.5应用案例:从播客配音到语音提醒,实战分享 1. 项目概述与核心优势 Fish-Speech 1.5作为新一代文本转语音(TTS)系统,凭借其创新的DualAR架构在语音合成领域脱颖而出。这个开源项目通过双自回归Transformer设计,主T…...
DW_apb_uart初始化全流程解析:从时钟门控到中断配置的15个关键步骤
DW_apb_uart深度初始化指南:从寄存器配置到中断优化的15个实战要点 在嵌入式系统开发中,UART通信作为最基础却又最关键的接口之一,其稳定性和性能直接影响整个系统的可靠性。DW_apb_uart作为业界广泛使用的高性能UART IP核,其初始…...
破局MIDI控制困境:SendMIDI让命令行成为音乐创作的神经中枢
破局MIDI控制困境:SendMIDI让命令行成为音乐创作的神经中枢 【免费下载链接】SendMIDI Multi-platform command-line tool to send out MIDI messages 项目地址: https://gitcode.com/gh_mirrors/se/SendMIDI 在数字音乐制作的世界里,MIDI&#x…...
OpCore Simplify:革新黑苹果配置流程——从繁琐到智能的EFI构建方案
OpCore Simplify:革新黑苹果配置流程——从繁琐到智能的EFI构建方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款…...
虚拟机异常断电后卡在initramfs阶段?手把手教你用xfs_repair修复系统分区
1. 虚拟机异常断电的常见后果 最近在调试一个基于KVM的虚拟机集群时,遇到了一个典型问题:机房突然断电后,几台虚拟机重启时卡在了initramfs阶段,屏幕上不断刷出"generating /run/initramfs/rdsosreport.txt"的提示。这种…...
WDMHDA:Windows 旧系统高清音频驱动的突破与挑战
【导语:WDMHDA 是一款适用于 Windows 98SE / ME 的高清音频驱动程序,为旧系统的音频功能带来新可能。但目前处于 Alpha 阶段,存在诸多待解决问题,其发展对旧系统音频生态有重要影响。】WDMHDA:旧系统音频驱动新选择WDM…...
【Matlab】MATLAB教程:拟合效果评估(案例:计算R²、残差;应用:量化评估拟合质量)
MATLAB教程:拟合效果评估(案例:计算R、残差;应用:量化评估拟合质量) 在实验数据分析、工程建模、科研拟合等场景中,很多人完成曲线拟合后,仅凭肉眼观察曲线是否“贴近数据”就判断拟合效果好坏,这种方式极具主观性:看似平滑的曲线,可能存在较大隐性误差;看似贴合局…...
线程与进程的区别与联系:操作系统入门详解(含 Python 示例)
、先搞懂:进程与线程到底是什么?(通俗类比官方定义) 1.1 生活化类比:快速建立认知 如果把计算机的操作系统比作一个大型工厂: 进程:就是工厂里的一个个独立车间。每个车间有自己专属的生产资…...
Java 25记录模式深度实战:手把手带你用模式匹配解构嵌套记录,效率提升47%(JVM实测数据)
第一章:Java 25记录模式的演进脉络与核心突破记录模式(Record Patterns)作为 Java 21 首次以预览特性引入、并在 Java 22 进一步增强、最终于 Java 25 正式成为标准特性的关键语言机制,标志着 Java 在模式匹配演进道路上完成从“解…...
对于对话中的用户长期兴趣建模,OpenClaw 的序列推荐方法?
关于对话系统中如何捕捉用户长期兴趣这件事,业内琢磨了挺长时间。传统的序列推荐模型,比如那些基于循环神经网络或者注意力机制的,往往更擅长处理短期的、密集的交互序列。它们像是一个敏锐的现场观察者,能立刻抓住你刚才点击了什…...
