父子进程共享内存通信的三种方法
1. mmap MAP_ANONYMOUS
在支持MAP_ANONYMOUS的系统上,直接用匿名共享内存就可以,
mmap(NULL, sizeof(int), PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_SHARED, -1, 0);
2. mmap /dev/zero
有些系统不支持匿名内存映射,则能够使用fopen打开/dev/zero文件,然后对该文件进行映射。能够相同达到匿名内存映射的效果。
fd=open("/dev/zero",O_RDWR);
if(fd==-1){printf("open /dev/zero null\n");return -1;
}
addr=mmap(NULL,sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
if(addr == NULL){printf("mmap error\n");return -1;
}
3. shmget shmat shmctl
shmget 是老式的system V 共享内存模式,非常多系统都支持这样的方法。
int id;
//得到一个共享内存标识符或创建一个共享内存对象并返回共享内存标识符
id = shmget(IPC_PRIVATE, shm->size, (SHM_R|SHM_W|IPC_CREAT));
if(id==-1){perror("shmget:");return -1;
}
//连接共享内存标识符为shmid的共享内存,连接成功后把共享内存区对象映射到调用进程的地址空间。随后可像本地空间一样訪问
addr = shmat(id, NULL, 0);
if(addr == NULL){perror("shmat:");return -1;
}
//完毕对共享内存的控制
if(shmctl(id, IPC_RMID, NULL)==-1){perror("shmctl:");return -1;
}
转载于:https://www.cnblogs.com/llguanli/p/8594543.html
父子进程共享内存通信的三种方法相关推荐
- linux+Qt 下利用D-Bus进行进程间高效通信的三种方式
linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...
- 线程间通信的三种方法 (转)
http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html 线程间通信的三种方法 多线程通信的方法主要有以下三种: 1.全局变量 进 ...
- linux如何创建共享内存,linux实现共享内存同步的四种方法
https://blog.csdn.net/sunxiaopengsun/article/details/79869115 本文主要对实现共享内存同步的四种方法进行了介绍. 共享内存是一种最为高效的进 ...
- linux查看进程占用的内存大小,查看进程占用内存大小的几种方法,占用内存几种方法...
查看进程占用内存大小的几种方法,占用内存几种方法 1. pmap -x pid 2. ps -aux | grep 进程名 ps -e -o 'pid,comm,args,pcpu,rsz,vsz,s ...
- java获取系统CPU和内存使用率的三种方法
获取系统CPU和内存的三种方法: 1.使用OperatingSystemMXBean获取 2.使用sigar方法获取 3.使用oshi方法获取 以下是我在我的机子上对三种方法测试的比较 方法 准确率 ...
- VC++中进程间相互通信的十一种方法
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是 操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL ...
- 【java】springboot项目启动数据加载内存中的三种方法
文章目录 一.前言 二.加载方式 2.1. 第一种:使用@PostConstruct注解(properties/yaml文件). 2.2. 第二种:使用@Order注解和CommandLineRunn ...
- 遍历DataTable内存数据的三种方法性能对比
http://www.cnblogs.com/guowei1027/archive/2009/12/15/1624699.html 前几年曾经碰到一个生成递归树形菜单的功能,由于系统比较庞大,有300 ...
- Fatal Error: Out of memory php内存溢出处理三种方法
有时候我们在运行php程序的时候会发现 Fatal Error: Out of memory 这样的提示,这有可能是程序中用到了大量了变量和对象,导致分配的内存不够用. 修改php.ini文件里的me ...
- VMWare虚拟机和主机共享/传输/拷贝文件三种方法
首先要安装虚拟机工具VMWare Tool这样鼠标进出使用也方便. 1.虚拟机和主机之间在安装了VMWare Tool之后可以实现剪贴板的共享,即可以复制粘贴.但是中文目录和中文文件和带空格的路径会出 ...
最新文章
- 【Codeforces】920A Water The Garden(浇花)
- linux基础-网络基础知识篇
- 构建局域网的病毒防护体系
- JS OffsetParent属性深入解析
- Java 的插件框架 PF4J
- 调用接口登录禅道_有java调用api登录并验证禅道的实例吗
- c 服务器二次验证码,V5验证官网 - 基础套餐免费 -滑块验证,行为验证,防刷验证 - 文档...
- 【算法分析与设计】找到最重的球
- 批处理打开和关闭oracle11g 服务
- 防不胜防!微信借钱语音确认仍被骗:我可真是太难了
- 面试官:简单说说Java8中的HashMap到底有啥变化?
- AOP 拦截器 JDK动态代理机制 struts2 mybatis spring-aop
- 日常笔记(持续更新)
- java项目开发团队协作重要性_Java 项目开发团队有必要统一 IDE 吗?
- 前端CSS基础——表单元素单选框的美化
- 怎么用计算机拨号手机,教你如何用电脑连接手机自动打电话
- 程序员鼓励师写下的励志名言,我干了
- SCI论文写作的时态用法
- linux与pe到移动硬盘,几步把WinPE安装到移动硬盘上
- eclipes error
热门文章
- 你真的掌握 LVS、Nginx 及 HAProxy 的工作原理吗?
- 即插即用,运维工程师必会正则表达式大全
- Google开源的FlexboxLayout
- android侧边栏点击,侧边菜单栏 android-menudrawer
- 部署Hadoop集群
- dhcpd中的mac
- [00011]-[2015-08-26]-[00]-[Windows 程序设计 ---MFC 截屏---BMP格式 ---JPG格式]
- 【C/C++】转义字符大全
- shell 字符串包含关系
- HDU 2553(N皇后问题)