当前位置: 首页 > ops >正文

linux学习第20天(进程间通信,管道)

进程间通信的常用方式、特征:

        管道:简单

        信号:开销小

        mmap映射:非血缘关系进程间

        socket(本地套接字):稳定

、、、、、、

管道:

        实现原理:内核借助环形队列机制,使用内核缓冲区实现

        特质:1、伪文件

                    2、管道中的数据只能一次读取

                    3、数据在管道中只能单向流动

        局限性:1、自己写,不能自己读

                        2、数据不可反复读

                        3、半双工通信

                        4、血缘关系进程间可用 

、、、、、、  

pipe函数:创建、并打开管道

        int pipe(int fd[2]);

        参数:fd[0]:读端

                   fd[1]:写端

        返回值:

                成功:0

                失败:-1        error

举个例子,父进程向管道写,子进程从管道读。

、、、、、、

管道的读写行为

        读管道:

                        1、管道有数据:read返回实际读到的字节数

                        2、管道无数据:

                                1)无写端:read返回0(类似于读到文件结尾)

                                2)有写端:read阻塞等待

        写管道:

                1:无读端:异常终止(SIGPIPE导致)

                2:有读端:

                                1)管道已满:阻塞等待

                                2)管道未满:返回写出的字节个数

实现ls | wc -l功能

http://www.xdnf.cn/news/13480.html

相关文章:

  • MYSQL多表查询
  • HashMap 核心实现原理分析
  • 【翻译】图解deepseek-R1
  • 组织结构图软件:数据驱动的可视化架构管理工具
  • 洛谷P1093【NOIP2007 普及组】奖学金
  • 560. 和为K的子数组
  • Flink 系列之二十七 - Flink SQL - 中间算子:OVER聚合
  • 国内电商API接口平台排名与解析
  • 2025年深度学习+多目标优化最新创新思路
  • 学习笔记087——Java接口和抽象类的区别和使用
  • 对比**CMake** 和 **PlatformIO** 构建嵌入式项目方式
  • C++(5)
  • Wordpress安装插件提示输入ftp问题解决
  • AIStarter一键启动平台:轻松运行AI项目,无需复杂配置
  • 五种IO模型与阻塞IO
  • LeetCode - 1047. 删除字符串中的所有相邻重复项
  • dockerfile 简单搭建 和 supervisor 进程管理工具
  • JAVASE:方法
  • 亚远景-ASPICE在汽车软件全生命周期管理中的作用
  • 7. 整数反转
  • 探索奇妙的LLM应用:提高工作效率的AI代理和RAG合集
  • Jemily张洁领域成就概述:匠心筑品牌,革新引航家用电梯新征程
  • 31.Python编程实战:自动化批量压缩与解压文件
  • GoldenDB简述
  • 【DVWA系列】——xss(DOM)——High详细教程
  • debian12 修改MariaDB数据库存储位置报错
  • 界面控件Kendo UI在实战应用——打通数据链路,重塑业务效率
  • UE5 蓝图按键控制物体旋转、暂停
  • Android NDK: Could not find application project directory
  • 【Mac技巧】修复Mac应用程序无法打开的解决办法