QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开

本文介绍了使用Qt的QSharedMemory组件进行进程间通讯(IPC)的基本原理和操作步骤,包括创建者和访问者的操作流程,并展示了如何通过共享内存来禁止程序多开。此外,还提到了其他IPC方法如D-Bus、TCP/IP和QProcess。通过设置和检查共享内存,可以防止多个实例的运行。
 

介绍

很简单的库,直接看帮助文档:http://doc.qt.io/qt-5/qsharedmemory.html

主要函数:设置key,create向系统申请建立一个内存空间、attach当前进程与内存绑定、detach解除绑定,lock/unlock同步锁,data/constdata获取内存指针

创建者流程:setkey,create,attach,lock,data,操作data,unlock,不用的时候detach

访问者:setkey,attach,lock,data,操作data,unlock,不用的时候detach?? 不需要create了

  • 作为创建者应该确定别人也不用了再解绑
  • QSharedMemory析构是也会自动detach
  • 一个内存空间如果0个attach时会被销毁,数据就没了
  • 读写操作记着lock,注意不要忘了unlock
  • 没有create的key,在调用attach时会返回false,注意这句在禁止程序多开有用

size获取共享内存大小,error/errorString是错误信息,isAttached判断当前进程是否已经绑定到内存。

范例

源码请见GitHub:QtCoreExamples

偷个懒,写到一起了:

#include <QCoreApplication>
#include <QSharedMemory>
#include <QDebug
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值