【Linux:管道】

news2024/12/24 8:57:16

进程间通信背景:

每一个进程想要访问物理内存,都是通过访问进程虚拟地址空间当中的虚拟地址进行访问,访问时,通过各自的页表结构,造成了每一个进程和每一个进程的数据独立,由于进程独立性的存在,进程运行时不会相互干扰,但是造成了进程与进程之间相互协作的难点。由此学习进程间通信本质就是为了进程与进程交换数据时使用

进程通信的前提是不同的进程能看见同一份资源 


 进程间通信的方法:

  1. 管道
  2. 共享内存
  3. 消息队列&信号量
  4. 信号

管道符号:| 

ps aux|grep xxx

  ps:本质都是可执行程序

  grep:可执行程序

将ps aux的输出内容通过管道|作为grep xxx的输入内容

 管道的本质:

管道在内核当中是一块缓冲区,供不同的进程进行读写的缓冲区

管道的接口:

int pipe (int pipefd[2]);

pipefd:数组,输出型参数。

pipefd[0],pipefd[1]是pipe函数进行填充的,参数当中保存的是文件描述符,两个文件描述符分别对应管道的读写两端。

pipefd[0]:管道的读端

pipefd[1]:管道的写端

返回值:0代表创建成功,-1表示创建失败

管道的特性:

  1. 管道是半双工通信的,数据流只能从写端流向读端
  2. 匿名管道在内核创建出来的缓冲区是没有标识符的,导致了其他进程没有办法直接找到这个缓冲区,但是创建的进程可以通过读写两端的文件描述符进行操作
  3. 匿名管道只支持具有亲缘性关系的进程(父子进程)进行进程间通信
  4. 在进行父子进程通信时,父进程先创建管道再创建子进程,此时子进程的文件描述符表中才会有匿名管道的读写两端的描述符 
  5. 当文件描述符保持基础属性(阻塞),一直调用write将管道写满后,write函数就会阻塞
  6. 管道的生命周期是跟随进程的
  7. 管道的通信是面对字节流的,写入与读取的次数并不是一一匹配的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第373题查找和最小的K对数字

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {int m nums1.length;int n nums2.length;/*二分查找第 k 小的数对和的大小*/int left nums1[0] nums2[0];int right nums…

Github 2024-08-25 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel: 以优雅语法简化Web开发 创建周期:4028 天开发语言:PHP协议类型:MIT LicenseStar数量:30824 个Fork数量:1052…

windows安装wsl,出现错误WslRegisterDistribution failed with error: 0x8007019e的解决方案

错误WslRegisterDistribution failed with error: 0x8007019e 笔者直接从Microsoft Store 安装 WSL后&#xff0c;没有其他操作&#xff0c;直接打开WSL&#xff0c;结果出现Error: 0x8007019e错误提示&#xff1a; Error 0x8007019e 解决方案 &#xff08;1&#xff09;Win…

滑块自动化分析

大家好!我是炒青椒不放辣,关注我,收看每期的编程干货。 滑块分析是爬虫工程师进阶必备技能,当我们遇到一个问题时可能会有多种解决途径,而如何做出高效的抉择和完善的解决流程又需要经验的积累。本期文章将以实战的方式,带你使用 playwright 进行滑块分析,不仅会告诉你应…

iPhone抹掉数据后能恢复吗?详解数据恢复的可能性与方法

在使用iPhone的过程中&#xff0c;有时候我们会因为各种原因选择“抹掉所有内容和设置”&#xff0c;以期望将手机恢复到出厂状态。然而&#xff0c;一旦执行了这个操作&#xff0c;很多用户就会开始担心&#xff1a;iPhone抹掉数据后&#xff0c;这些数据还能恢复吗&#xff1…

VMware安装Ubuntu20.04

1. 下载 整理的镜像链接 阿里网盘&#xff1a;阿里云盘快传 2. 新建虚拟机向导 选择自定义&#xff0c;然后下一步。 默认配置&#xff0c;下一步。 选择稍后安装操作系统&#xff0c;下一步。 选择操作系统Linux&#xff0c;版本Ubuntu64位&#xff0c;下一步。 给虚拟机命名…

2534. 乘方 [CSP-J 2022]

代码 #include<bits/stdc.h> using namespace std; int main() {long long n,m,i,sum1;cin>>n>>m;for(i1;i<m;i){sum*n;if(sum>1000000000){cout<<-1;return 0;;}}cout<<sum;return 0; } 记得点赞关注收藏&#xff01;&#xff01;&…

根据股票列表获取资金流入情况

获取股票列表 作为演示&#xff0c;以创业板为例&#xff08;数据不多&#xff09;&#xff0c;我们通过自编的 get_stock_list 方法获取股票列表&#xff1a; import pandas from bad import BigAData from tqdm.notebook import tqdmplate cyb bad BigAData() json bad.…

180页某项目可视化智能停车场系统技术解决方案WORD

今天分享的是一份《180页某项目可视化智能停车场系统技术解决方案WORD》&#xff0c;资料详细完整的描述了关于数智化停车场的建设方案&#xff0c;参考价值很高。 传统停车场存在进出场效率低、找车位难、找车难、管理难、管理成本高等诸多问题&#xff0c;本次建设的XX项目将…

四、控制结构

文章目录 引言一、顺序控制二、分支控制&#xff08;if&#xff0c;else&#xff0c;switch&#xff09;2.1 if 单分支2.2 if 双分支2.3 if 多分支2.4 if 嵌套分支2.5 switch分支结构2.6 switch和if的比较 三、循环控制&#xff08;for&#xff0c;while&#xff0c;dowhile&am…

[Linux#47][网络] 网络协议 | TCP/IP模型 | 以太网通信

目录 1.网络协议 2.协议分层 2.1 OSI七层模型 2.2TCP/IP五层(四层)模型 2.3 以太网通信 1.网络协议 "协议"本质就是一种约定 计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的 信息. 要想传递各种不同…

全志616系统启动和登录

一、系统启动 刷完机烧入镜像&#xff0c;直接用MobaXterm软件串口登陆 约定固定的波特率115200。 默认登录&#xff1a; 用户&#xff1a;orangepi 密码&#xff1a;orangepi 或用户&#xff1a;root 密码&#xff1a;orangepi 在输入密码时…

SEO之网站结构优化(十三-网站地图)

** 初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; ** 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 网站无论大小&…

5分钟学会使用Linux的 grep、find、ls、wc 命令

Linux基础命令和工具 一、前导&#xff1a;概述1.1、监控1.2、测试1.3、优化 二、grep 搜索字符三、find 查找文件四、ls 显示文件五、wc 命令六、总结 一、前导&#xff1a;概述 本系列主要讲解Linux运行时命令&#xff0c;包括网络、磁盘、内存、CPU相关参数等&#xff0c;主…

伏图芯片应力仿真功能介绍

随着电子产品向小型化、规模化、集成化方向发展&#xff0c;机械应力对器件性能的影响日益显著。产品在晶圆加工、芯片封装、元器件装配等过程中均会受到机械应力的作用&#xff0c;可能会直接影响芯片的电性能和可靠性。 仿真技术在芯片产品研发设计和故障排查阶段扮演着至关…

Python | Leetcode Python题解之第372题超级次方

题目&#xff1a; 题解&#xff1a; class Solution:def superPow(self, a: int, b: List[int]) -> int:MOD 1337ans 1for e in b:ans pow(ans, 10, MOD) * pow(a, e, MOD) % MODreturn ans

NIOS Eclipse突然报错:No rule to make target `/system.h

NIOS Eclipse突然报错&#xff1a;No rule to make target /system.h 今天打开NIOS Eclipse编译昨天完好的工程&#xff0c;发现报错。我就纳闷了&#xff0c;代码没有修改&#xff0c;编译结果报错 控制台中problems选线中显示&#xff1a; No rule to make target /system…

嵌入式开发神器——vim配置

本期主题&#xff1a; 讲解vim的一些配置&#xff0c;让大家也可以用上自己定制化的vim 目录 0. 目前个人所用的vim配置截图1. vim的插件1. 怎么找插件2. 如何安装插件3. 安装好了如何使用插件 2. 个人配置的vim链接 0. 目前个人所用的vim配置截图 1. vim的插件 1. 怎么找插件…

【Qt】输入类控件QSlider

目录 输入类控件QSlider 例子&#xff1a;调整窗口大小 例子&#xff1a;通过自定义快捷键调整滑动条位置 输入类控件QSlider 使用QSlider表示一个滑动条 QDail与QSlider都继承于QAbstractSlider&#xff0c;所以其用法基本相似。 核心属性 属性说明 value 持有的数值 mi…

【hot100篇-python刷题记录】【反转链表】

R6-链表篇 思路&#xff1a;想到使用2个指针来做 pre在head前,now就是head 初始&#xff1a;nowhead,predummy 每次需要进行的操作&#xff1a; tmpnow.next now.next-->pre prenow nowtmp class Solution:def reverseList(self, head: Optional[ListNode]) -> …