【Linux 进程间通信】管道

1.System V 标准介绍

①🍎 System V 实际上就是一个标准(“ 行业领头羊制定出来的专利 " )
在这里插入图片描述

2.进程间通信的方式?

①消息队列;②共享内存;③信号量;

上面这三种是有比较成型的标准才有的,后面慢慢形成较为复杂模板的通信方式,那么在此之前有没有更为简单的通信方式呢?

答案肯定是有的,就是 管道直接复用内核代码进行通信

3.管道(匿名管道)

①🍎为什么父子进程会向同一个显示器终端打印数据呢?

因为父进程 fork()一个子进程,子进程继承父进程,所以两个进程的文件描述符表一样,所以查表可知同同一个显示器终端打印。

②🍎 进程会默认打开三个标准输入输出错误:0,1,2…怎么做到的呢?

他们都是 bash 的子进程,bash父进程打开了,所以子进程就会打开。

③🍎 为什么我们子进程主动 close(0/1/2),不会影响父进程使用显示器文件呢?

从下图可知,我们只需要把子进程的文件描述符信息表中的指针进行修改即可;

在这里插入图片描述


细节注意点:❗
①🍌管道只允许单向通信,即:父----->子(父进程写,子进程读)或者 子---->父(子进程写,父进程读),不可两者都同时写;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


①🍎父子之后要关闭不需要使用的 fd(读或者写接口),为什么要在开始的时候全部打开呢?

为了子进程继承父进程的读写,因为如果父进程只有写的话,子进程也只能有写,如果子进程之后想要读的话,就不可以了;

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来可期LJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值