5.3 进程间通信管道和共享内存

每次打开一个网页都是一个进程

进行管道之间通信的方式:以前学到的有可以在磁盘上开辟空间进行交互,也可以在内存中开辟缓冲区进行交互。

一定注意可读性

管道就是属于在内存中的一片缓冲区,管道可以在命令行中创建管道mkfifo也可以在vim中用代码,删除unlink也是这样

管道的本质是一致的,有两个分支可以分为匿名管道仅用于父子进程之间的通信(int num[2]),命名管道需要创建文件进行通信用完后需要删除。

这个地方需要好好理解,先打开匿名管道pipe再fork就会出现像这样的情况,但是一定记得管道是半双工的,因此说不能同时写同时读所以说一般都是关闭一端。

popen和pclose是就是默认连接标准输入和输出

popen就是有点类似system,就是打开一个可执行程序,同时将标准输入或者是标准输出管道将两者进行连接。

管道往往用于少量的数据的传输。管道出现的问题当需要交互的进程比较多的时候,管道的使用次数就比较多,同时从内存拷贝到内核中然后从内核态再拷贝到内存中,比较耗费性能。

因此说这个地方就可以用共享内存来实现,这样的话,两个进程都是读写在一个地方。

问题点可能是在于究竟是都还是写("r","fread"),这个地方是相对于管道而言!!!

一般各个进程之间都是在逻辑有自己的一片虚拟内存,往往各个进程的物理部分也存在不同的位置不能直接进行交互,可以借助于共享内存的方式进行交互,在物理上共享一片内存。

共享内存由主要由两个指令:system V 和POSIX 接口

信息在网络上进行传输必须要具有自我描述性,要不然传过去不知道到底传过去的是什么东西,所以说必须要借助于键值对内容标记。共享内存的键值对也是这样的道理。

在linux中的实现是首先先造一个key(ftok)然后再为这个key分配相应的空间(shmget),然后再将相应的内存与程序空间连接。之后的操作有断开连接(shmdt)以及多功能函数释放共享内存空间修改内存空间权限(shmctl)。

ftok("1.txt", )通过某一个文件产生一个key,究竟是哪一个文件不重要,还有另外一个参数,也是帮助建立不同的键,所以说只要有一个不一样的就会是一个不一样的共享内存区域

共享内存空间的分配一般都是分配一页4096,shmget后面的附加的命令是比较复杂的,可以查看。

框架:

进程间通信可以采用在磁盘上共享,也可以在内存中共享也就是管道。

管道可以分为有名管道和匿名管道,有名管道需要创建文件,匿名管道只能用于父子进程之间。

但是进程的交互比较多的时候,在内存与内核之间来回拷贝耗费的性能比较多

-----》因此说用共享内存

共享内存的开辟三步走,起个名-----造空间------将共享空间与程序连接

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java技术栈快速复习05_基础运维(linux,git)

Linux知识总览 linux可以简单的理解成和window一样的操作系统。 Linux和Windows区别 Linux是严格区分大小写的;Linux中一切皆是文件;Linux中文件是没有后缀的,但是他有一些约定俗成的后缀;Windows下的软件一般是无法直接运行的Li…

京东JD商品SKU信息API返回值解析:精准掌握商品属性

在电子商务迅猛发展的今天,商家对于商品信息的掌握和管理显得尤为重要。作为电商平台的佼佼者,京东(JD)提供了丰富的API接口,使得商家能够轻松地获取商品的详细信息,包括SKU(Stock Keeping Unit…

2024五一数学建模A题思路代码与论文分析

2024五一数学建模A题完整代码和成品论文获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc# 2024五一数学建模A题钢板最优切割路径问题需要建立的模型和算法: 图论 最短路径算法(Dijkstra算法、Floyd算法等) 动态规划 网格化离散建模 …

【USB 3.2 Type-C】 端口实施挑战的集成解决方案 (补充一)

USB 3.2 Type-C 端口集成 补充,上一篇感觉还有没理解到位的一部分; 一、只做正反插的通信,已经差不多够了,但是这并不是完整的TYPE-C,必须要补充上PD; 参考连接: TYPE-C PD浅谈(一)https://w…

删除链表中等于给定值 val 的所有结点(三种方法深入解析)

又见面啦,接下来的链表相关Oj题目我会根据我自己的理解来给大家讲解,包括解析和代码,希望你可以对链表有更加深入的理解!! 题目: 先上链接: OJ题目 给你一个链表的头节点 head 和一个整数 va…

软件工程毕业设计选题100例

文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题,难度适中,适合作为毕业设计,大家参考。 学长整理的题目标准: 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…

计算机网络-408考研

后续更新发布在B站账号:谭同学很nice http://【计算机408备考-什么是计算机网络,有什么特点?】 https://www.bilibili.com/video/BV1qZ421J7As/?share_sourcecopy_web&vd_source58c2a80f8de74ae56281305624c60b13http://【计算机408备考…

RabbitMQ入门教学(浅入浅出)

进程间通信 互联网的通讯时网络的基础,一般情况下互联网的资源数据对储存在中心服务器上,一般情况下个体对个体的访问仅限于局域网下,在公网即可完成资源的访问,如各种网站资源,下载资源,种子等。网络通讯…

40 生产者消费者模型

生产者消费者模型 概念 为何要使用生产者消费者模型,这个是用过一个容器解决生产者和消费的强耦合问题。生产者和消费者之间不需要通讯,通过阻塞队列通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列&#xf…

用Stream流方式合并两个list集合(部分对象属性重合)

一、合并出共有部分 package com.xu.demo.test;import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class ListMergeTest1 {public static void main(String[] args) {List<User> list1 Arrays.asList(new User(1, "Alic…

docker 基础命令

docker 安装 更新系统 sudo apt update sudo apt -y dist-upgrade安装docker sudo apt-get -y install ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/…

【Elasticsearch】安装配置与使用

1 前期准备 1.1 环境准备 麒麟ARM 64位操作系统 1.2 安装包准备 Elasticsearch下载地址: https://www.elastic.co/cn/downloads/elasticsearch 2 部署elasticsearch 2.1 创建es专用用户 注意&#xff1a;ES不能使用root用户来启动&#xff0c;必须使用普通用户来安装启…

【HTTP上】协议/域名/url/请求和响应/状态码/重定向

文章目录 0.应用层协议0.1HTTP协议 1.域名2.DNS3.访问浏览器4.URL搜索特殊字符如#&~ 5.万维网6.http请求和响应的格式6.1HTTP请求格式6.2HTTP响应格式6.3示例6.3模拟HTTP【框架】6.4查看请求或响应的工具FiddlerPostman 7.网页7.0对访问网页的认识7.1wget7.2新的认识7.3GET…

Java将文件目录转成树结构

在实际开发中经常会遇到返回树形结构的场景&#xff0c;特别是在处理文件系统或者是文件管理系统中。下面就介绍一下怎么将文件路径转成需要的树形结构。 在Java中&#xff0c;将List<String>转换成树状结构&#xff0c;需要定义一个树节点类&#xff08;TreeNode&#…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作&#xff0c;今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作&#xff0c;有助于更好理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

北京金融大数据有限公司X百望云签署战略合作协议 共同发布“金数数据要素流通云平台”

随着数据资产与数据要素相关政策密集出台&#xff0c;资本与实业企业均跃跃欲试。但因为没有龙头企业的方案引领和成熟的落地实践&#xff0c;市场呈谨慎观望态势&#xff0c;热度无处安放。 北京金融大数据有限公司&#xff08;以下简称“金融大数据公司”&#xff09;作为市…

excel怎么删除条件格式规则但保留格式?

这个问题的意思就是要将设置的条件格式&#xff0c;转换成单元格格式。除了使用VBA代码将格式转换外&#xff0c;还可以用excel自己的功能来完成这个任务。 一、将条件格式“留下来” 1.设置条件格式 选中数据&#xff0c;点击开始选项卡&#xff0c;设置条件格式&#xff0…

微服务保护和分布式事务(Sentinel、Seata)笔记

一、雪崩问题的解决的服务保护技术了解 二、Sentinel 2.1Sentinel入门 1.Sentinel的安装 &#xff08;1&#xff09;下载Sentinel的tar安装包先 &#xff08;2&#xff09;将jar包放在任意非中文、不包含特殊字符的目录下&#xff0c;重命名为 sentinel-dashboard.jar &…

STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)续-音质问题解决总结

一、前言 之前进行了STM32CubeMXMDK通过I2S接口进行音频输入输出&#xff08;全双工读写一个DMA回调&#xff09;的研究总结&#xff1a; https://juejin.cn/post/7339016190612881408#heading-34 后续音质问题解决了&#xff0c;目前测试下来48khz的双声道使用效果很好&…

Pytorch学习笔记——TensorBoard的初使用

1、TensorBoard介绍 TensorBoard是TensorFlow的可视化工具&#xff0c;但它也可以与PyTorch结合使用。TensorBoard提供了一个Web界面&#xff0c;可以展示你训练过程中的各种信息&#xff0c;如损失值、准确度、权重分布等&#xff0c;更好地帮助开发者理解和调试模型。 Tenso…