写数据程序

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相关推荐

  1. linux共享内存示例,linux 进程间共享内存示例

    写入端: #include #include #include #include #include using namespace std; struct MappingDataType { int ...

  2. 文件内存映射mmap解决大文件快速读写问题和进程间共享内存

    mmap函数主要用途有三个: 1.将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能: 2.将特殊文件进行匿名内存映射,可以为关联进程提供共 ...

  3. 进程间共享内存(信号量实现同步)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yongjiuzhizhen.blog.51cto.com/7980250/132 ...

  4. 安卓执法仪录像之进程间共享内存

    背景 之前我在文章里说过,我们的录像模块是跨进程的.为什么要这样设计,是因为录像这个过程是一个长期执行的过程,中间不能有断开.为了保证稳定性,通过进程隔离将录像业务同主业务分离. 通常情况下,如果在录 ...

  5. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析

    在前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析中,我们系统地介绍了Android系统匿名共享内存的实现原理,其中着重介绍了 ...

  6. c++ 内存映射文件进程间共享数据

    int main(int argc, char *argv[])   {       //RecursiveDelete("C:\\20_128\\");       //Self ...

  7. Qt之进程间通信(共享内存)

    简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...

  8. 【Qt】Qt之进程间通信(共享内存)【转】

    简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...

  9. windows核心编程之进程间共享数据

    有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存 ...

  10. 如何在进程间共享数据

    1.引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同 ...

最新文章

  1. Zookeeper详解(一):分布式与Zookeeper
  2. IT 巡检内容、工具、方法 amp; Linux / AIX / Oracle / VMware 巡检表模板 | 周末送资料...
  3. EL中的param和params
  4. 高等数理统计(part1)--随机变量及其分布函数
  5. 为什么用scrum_为什么Scrum糟糕于数据科学
  6. php扇形分布图,php生成扇形比例图的实例代码
  7. Docker部署Angular应用
  8. SAP License:元素 POS_BELZEILE2 窗口 MAIN 没被定义给格式 INVENT
  9. 腾讯广告算法大赛 | 初赛第一名心得分享
  10. [Easyui - Grid]为easyui的datagrid、treegrid增加表头菜单,用于显示或隐藏列
  11. 解决Sqlite Developer过期的办法
  12. python requests 上传文件
  13. C/C++ FFmepeg Qt音视频开发录屏摄像机
  14. 鼠标按下并移动事件的解决方案
  15. c语言中有关随机数的程序,C语言中随机数相关问题
  16. 如何在移动开发者的寒冬中破冰而出?
  17. 如何实现上传多个图片并依次展示_在一张PowerPoint中插入多张图片如何让这些图片能依次播放...
  18. 2023 Archlinux NVIDIA 3070 intel 双显卡驱动 + i3wm 解决方案
  19. 浅析正向代理、反向代理、透明代理
  20. Linux 逻辑卷管理器(LVM)

热门文章

  1. ASP和JS读写Cookie的问题
  2. 企业网站电子邮件营销的优势与转化率分析
  3. 第一章 虚拟化技术概述
  4. 做一个管理者的学习之路--002
  5. Java Web开发实战(一)—JDK安装及环境变量配置
  6. ios 开发常用技巧
  7. python取整数部分语句_pythonlogi中不使用条件语句的整数取整
  8. 中断触发后无法进入服务程序_51单片机的中断系统及应用
  9. 安全提示:IIS不要开启“WebDAV”扩展
  10. ajax id sort,带有ajax更新的Jqueryui可排序列表