qt 的进程间共享内存 QSharedMemory
写数据程序
1.定义QSharedMemory shareMemory,并设置标志名setKey();
2.将共享内存与主进程分离 detach();//如果是当前exe是最后一个使用该memory的进程,那么detach()后,该共 享内存的内存地址就被释放了。相当于windows的unmapviewoffile 加 closehandle的结合体
也可以先使用isAttached()判断,如果是确实连接了,再调用detach进行分离。
3.创建共享内存create(int size, AccessMode mode = ReadWrite),
4.将共享内存上锁lock();
5.调用data得到共享内存地址,将进程中要共享的数据拷贝到共享内存中,
6.将共享内存解锁unlock();
注意:写完后,坚决不能调用detach(),如果调用detach(),那么共享内存的内存会被释放掉,写入的字节就被删除。
读数据的程序:(读取数据,必须调用attach())
1,定义QSharedMemory shareMemory,并设置共享内存的标志名setKey()注意设置的要与提供内存共享的一方要一样。
2,将共享内存上锁lock();
3,将共享内存与主进程绑定attach(),使该进程可以访问共享内存的数据;
4,调用data得到共享内存地址,从共享内存中取数据;
5,使用完后将共享内存解锁shareMemory.unlock(),
6. 将共享内存与该进程分离shareMemory.detach()
此外还需灵活使用下面的函数:
1. SharedMemoryError error() const;得到错误码, 2. bool isAttached() const;
qt 的进程间共享内存 QSharedMemory相关推荐
- linux共享内存示例,linux 进程间共享内存示例
写入端: #include #include #include #include #include using namespace std; struct MappingDataType { int ...
- 文件内存映射mmap解决大文件快速读写问题和进程间共享内存
mmap函数主要用途有三个: 1.将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能: 2.将特殊文件进行匿名内存映射,可以为关联进程提供共 ...
- 进程间共享内存(信号量实现同步)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yongjiuzhizhen.blog.51cto.com/7980250/132 ...
- 安卓执法仪录像之进程间共享内存
背景 之前我在文章里说过,我们的录像模块是跨进程的.为什么要这样设计,是因为录像这个过程是一个长期执行的过程,中间不能有断开.为了保证稳定性,通过进程隔离将录像业务同主业务分离. 通常情况下,如果在录 ...
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析
在前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析中,我们系统地介绍了Android系统匿名共享内存的实现原理,其中着重介绍了 ...
- c++ 内存映射文件进程间共享数据
int main(int argc, char *argv[]) { //RecursiveDelete("C:\\20_128\\"); //Self ...
- Qt之进程间通信(共享内存)
简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...
- 【Qt】Qt之进程间通信(共享内存)【转】
简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...
- windows核心编程之进程间共享数据
有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存 ...
- 如何在进程间共享数据
1.引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同 ...
最新文章
- Zookeeper详解(一):分布式与Zookeeper
- IT 巡检内容、工具、方法 amp; Linux / AIX / Oracle / VMware 巡检表模板 | 周末送资料...
- EL中的param和params
- 高等数理统计(part1)--随机变量及其分布函数
- 为什么用scrum_为什么Scrum糟糕于数据科学
- php扇形分布图,php生成扇形比例图的实例代码
- Docker部署Angular应用
- SAP License:元素 POS_BELZEILE2 窗口 MAIN 没被定义给格式 INVENT
- 腾讯广告算法大赛 | 初赛第一名心得分享
- [Easyui - Grid]为easyui的datagrid、treegrid增加表头菜单,用于显示或隐藏列
- 解决Sqlite Developer过期的办法
- python requests 上传文件
- C/C++ FFmepeg Qt音视频开发录屏摄像机
- 鼠标按下并移动事件的解决方案
- c语言中有关随机数的程序,C语言中随机数相关问题
- 如何在移动开发者的寒冬中破冰而出?
- 如何实现上传多个图片并依次展示_在一张PowerPoint中插入多张图片如何让这些图片能依次播放...
- 2023 Archlinux NVIDIA 3070 intel 双显卡驱动 + i3wm 解决方案
- 浅析正向代理、反向代理、透明代理
- Linux 逻辑卷管理器(LVM)