linux进程通信 ipc

进程通信

管道

父子进程创建命令

实现ls | wc -l

左边写端 ,右边读端

父进程写 子进程读

int fd[2];

pipe(fd);

fd[1] 是写

fd[0]是读

读之前关闭写

写之前关闭读

兄弟进程创建命令

无法进行管道通信可能是父进程也把握了读端和写端

可能会流入到父进程

管道缓存区

函数查询

fd[0,1]都可以,name用来表示查什么的

管道的优缺点

命名管道

fifo命名管道

一个文件是写文件,一个文件是读文件

mkfifo p1

./ 加管道名写 ./ 加管道读

管道里面的数据没法重复读取

两个管道同时写,也得排队读取

共享内存 映射

文件间可以进行进程通信

无血缘进程也可以进程通信

同一个文件不同进程打开,os内核同一个缓冲区

写到内核缓冲区,打开也是打开内核的缓冲区

共享内存(效率最高)

mmap函数

建立映射

借助文件映射,创建内存映射区

addr :指定映射区的首地址。通常传NULL,表示让系统自动分配

length:共享内存映射区的大小≤文件的实际大小

prot:添加共享内存映射区的读写属性,PROTREAD. PROTWRITE PROTREAD|PROTWRITE

flags :标注共享内存映射区的共享属性

MAP_SHARD:对共享内存所做的修改会反应到物理磁盘文件上

MAP_PRIVATE:不会反应

fd :用来创建共享内存映射区的那个文件的文件描述符

offset:默认0,表示映射全部文件,偏移位置,必须是4k的整数倍;

返回值:

munmap释放共享内存映射

mmap创建映射区

创建文件的大小要大于创建的共享映射区的大小,不然会报总线错误

然后 文件的权限和共享映射区的权限 必须一致

mmap使用的注意事项

mmap保险调用方式

1.fd =open("文件名",O_RDWR);//读写文件权限

2.mmap(NULL,有效文件大小,PROTREAD|PROTWRITE,MAP_SHARD,fd,0);

mmap父子进程通信

MAP_SHARD 父子进程共享映射区

读共享写复制,

子进程要修改,修改的复制的那一份,父进程是原来的自己的那一份

这里从建立映射区开始

非血缘关系的mmap进程通信

同步读,共享内存里的都可以读

总结:

匿名映射

直接创建映射区

只适合没有血缘关系的进程不适合通信

不需要打开文件

MAP_ANON 只 在linux系统有效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578836.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抓包理解协议

用的Wireshark 抓包 1.抓包网卡选择 - WLAN 无线网卡,其他是本地虚拟机的网卡 这里分别是开始捕获、停止捕获、重新捕获、网卡选择,下面是可以过滤选择 过滤tcp包 3次握手: source是源地址, destination是目标地址,in…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-5

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

嵌入式学习58-ARM7(字符设备驱动框架led)

知识零碎: kernel 内核 printk 内核打印 cat /proc/devices insmod …

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈。之前都安装过无数次了。这次被卡住了。 原来是这里原因 不成功是因为启动时连接没打钩。默认是打钩的。不知道怎么的我把勾去掉了。我还跑去设置bios。都没有用。

开放地址法解决哈希冲突

1.基本思想: 有冲突时就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将元素存入. 2.开放地址法的常用方法: (1) 线性探测法: Hi(Hash(key)di)%m (1<i<m),其中:m为哈希表长度,di为增量序列1,2,……m-1,且dii;其实就是一旦有冲突,就找下一个空地…

【Spring MVC】_SpringMVC项目返回静态页面

目录 1. 创建与设计前端页面 2. 返回HTML静态页面 2.1 示例1&#xff1a;使用RestController 2.2 示例2&#xff1a;使用Controller 3. RestController与Controller 在本专栏关于SpringMVC项目的相关文章中&#xff0c;已经介绍了操作HTTP请求的方式&#xff0c;包括多种传…

CTFHub Web 信息泄漏(一)

目录遍历 打开题目 点击开始寻找flag 发现在flag_in_here页面中有四个文件夹 点击打开第一个文件夹 发现里面还有四个文件夹 再次点击打开第一个文件夹 里面什么都没有 尝试对所有文件夹依次都点击打开 在2/4中发现flag.txt 点击打开即可得到flag 不太懂这题的难点&#…

[RocketMq:基于容器化]:快速部署安装

文章目录 一&#xff1a;相关镜像准备&#xff1a;RocketNameServer1.1&#xff1a;查看相关镜像和版本1.2&#xff1a;拉取镜像1.3&#xff1a;配置和运行RocketNameServer容器 二&#xff1a;相关镜像准备&#xff1a;RocketBroker2.1&#xff1a;创建配置目录和broker配置文…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(一)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 1 - 2节&#xff09; P1《课程介绍》 开场白&#xff0c;HarmonyOS 的一个简介&#xff0c;话不多说&#xff0c;直接看图吧&…

【算法一则】【贪心】数组中的数可以拼装成的最大数

题目 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 示例 1&#xff1a; 输入&#xff1a;nums [10,2] …

基于canal监听MySQL binlog实现数据增量同步

一、背景 业务反馈客服消息列表查询速度慢&#xff0c;有时候甚至要差不多20秒&#xff0c;急需优化提升速度。 二、方案 引入 首先&#xff0c;体验系统&#xff0c;发现查询慢的正是消息列表查询接口。 接着去看代码的设计&#xff0c;流程比较长&#xff0c;但从代码逻…

应用监控(Prometheus + Grafana)

可用于应用监控的系统有很多&#xff0c;有的需要埋点(切面)、有的需要配置Agent(字节码增强)。本节我教大家另外一个监控系统的使用 —— Grafana。 Grafana 监控面板 这套监控主要用到了 SpringBoot Actuator Prometheus Grafana 三个模块组合的起来使用的监控。非常轻量好…

第一个大型汽车ITU-T车载语音通话质量实验室投入使用

中国汽车行业蓬勃发展&#xff0c;尤其是新能源汽车风起云涌&#xff0c;无论是国内还是海外需求旺盛的趋势下&#xff0c;除乘用车等紧凑型车外&#xff0c;中型汽车如MPV、小巴、小型物流车&#xff0c;大型汽车如重卡、泥头车等亦加入了手机互联、智驾的科技行列&#xff0c…

机器人-轨迹规划

旋转矩阵 旋转矩阵--R--一个3*3的矩阵&#xff0c;其每列的值时B坐标系在A坐标系上的投影值。 代表B坐标系相对于A坐标系的姿态。 旋转矩阵的转置矩阵 其实A相对于B的旋转矩阵就相当于把B的列放到行上就行。 视频 &#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵。&…

基于__torch_dispatch__机制的dump方法

基于__torch_dispatch__机制的dump方法 1.参考链接2.原理3.代码4.效果 之前拦截torch和torch.Tensor的办法,在处理backward时,不能看到aten算子的细节.以下基于__torch_dispatch__机制的方案更节约代码,且能看到调用栈 1.参考链接 [原理] (https://dev-discuss.pytorch.org/t…

matlab学习005-利用matlab设计滤波器

目录 一&#xff0c;含有多个频率成分的三角信号 1&#xff0c;以采样频率fs20KHz对信号采样&#xff0c; 画出信号的波形&#xff1b; 1&#xff09;前期基础 2&#xff09;波形图 3&#xff09;代码 2&#xff0c;选取合适的采样点数&#xff0c;利用DFT分析信号的…

FPGA 以太网通信UDP通信环回

1 实验任务 上位机通过网口调试助手发送数据给 FPGA &#xff0c; FPGA 通过 PL 端以太网接口接收数据并将接收到的数据发送给上位机&#xff0c;完成以太网 UDP 数据的环回。 2 系统设计 系统时钟经过PLL时钟模块后&#xff0c;生成了两种不同频率和相位的时钟信号&#…

基于SpringBoot+VueHome F家居系统的设计与实现

系统介绍 该Home F家居系统采用B/S架构、前后端分离以及MVC模型进行设计&#xff0c;并采用Java语言以及SpringBoot框架进行开发。本系统主要设计并完成了用户注册、登录&#xff0c;购买家具过程、个人信息修改等&#xff0c;商家添加家具信息、对家具进行发货&#xff0c;管理…

缓解程序员工作压力:从心理健康到社交网络

缓解程序员工作压力&#xff1a;从心理健康到社交网络 缓解程序员工作压力&#xff1a;从心理健康到社交网络摘要引言工作与休息的平衡制定有效的工作计划定时休息和放松 心理健康与自我关怀培养良好的生活习惯寻找心灵的慰藉 社交与网络建设加入专业社区和论坛建立良好的同事关…

【静态分析】静态分析笔记09 - 污点分析

参考&#xff1a; 【课程笔记】南大软件分析课程—16课时完整版 - 知乎 ------------------------------------------------------------------------------- 1. 信息流安全 访问控制&#xff1a;关注信息访问。 信息流安全&#xff1a;关注信息传播。 信息流&#xff1a…