通信连接,匿名管道

进程通信目的

为什么要进行进程通信?

进行数据传输

资源共享

通知事件

进程控制

进程间通信发展

管道(分为匿名和有名)

systemv进程间通信:一台机器内

posix:跨网络通信

systemVIPC进程通信标准,确立标准

进程间通信是怎么做的,本质问题?

我们知道进程是有独立性的

所以首先要让这俩看到同一份资源

这个可以由os提供的系统调用来,这二个就是由我们上面说的标准来定

我们该怎么办才可以实现这个?

匿名管道-》没有名字?为什么?

1.直接说通信原理

管道:基于文件,进行内核级进程通信,但是这个只能进行单项通信

细节一:fork时,file要进行拷贝

2.单向通行,也叫做单工通信(要么父亲给孩子写,要么孩子给父亲写)

全双工:互相发

半双工:一方给另一方,一方说,一方听,这个可以换过来

单工:只能一方说,一方听

管道:我们不需要路径和文件名,所以我们这里叫匿名管道

细节三:是内存级,不用打开磁盘文件,不要路径

我们这里管道是可以任意关闭读写权限的,但是不建议这样做

创建管道

pipe:创建一个管道

他有两个输出型参数

接下来是代码展示

总结

匿名管道特性与情况说明

五种特性

1.单向通信,单工通信

2.匿名管道只能进行父子间的通信(因为继承了内核资源)(有血缘关系的都可以)

3.管道是面向字节流的,也就是随意读取字节

4.管道的生命周期随进程,当父子进程都结束,管道也消除了

5.管道通信对多进程而言,是自带互斥与同步机制的

四种情况

1.自己成写的慢,父进程就会阻塞,等待管道有数据之后,父进程才开始读

管道通信,前提是让不同的进程看同一份资源,父子会进行共享资源,这就会导致一个并发访问的问题,所以我们上面说了他又互斥也就是,一个在写的时候另外一个阻塞,同步的意思就是,会存在有个顺序问题

2.子进程写的快,父进程不读,管道(64kb)被写满,子进程会被阻塞

3.读端在读,写端关闭,读完管道里的所有数据,就会读空字符串,此事的返回值会是0

4.写的话一只写,读端不读,os会认为这是在浪费资源,会直接杀死写进程(进程退出信号是13,管道破裂)

相关推荐
无足鸟ICT3 小时前
【RHCA+】安装Tuned
linux·服务器·centos
九英里路5 小时前
protobuf快速上手
网络·c++·中间件·json·谷歌·序列化·protobuf
测试界的小码农8 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
艺杯羹9 小时前
1Panel 装好后 ufw 仍是 inactive:一次服务器安全盲区复盘
服务器·数据库·安全·网络安全·系统架构·实战·1panel
一条破秋裤10 小时前
【1114】【并发控制】【笔记】
linux
2035去旅行11 小时前
ADB的底层原理
linux·adb·嵌入式·arm·soc
武子康11 小时前
单卡 A6000 跑 Qwen-Drive:怎样留下可比较的第一条基线?
linux·人工智能·深度学习
女神下凡11 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
落羽的落羽11 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习