ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

Linux系统编程:半双工Linux / Unix管道简介

前开发者教程 2020年5月22日

介绍:

*管道是将一个过程的标准输出连接到另一个过程的标准输入的方法。

*管道是最古老的IPC机制之一。

*它们提供了过程之间的一种通信方式。

*因此,它们是半双工的。

我们在shell脚本中使用了管道
例如: ls | 分类 | lp

在上面的示例中,数据沿一个方向流动。即来自“ls”作为输入给“sort” and output of 分类作为输入给“lp”。因此,数据在一个方向上从左到右传播。因此半双工。

当一个进程创建一个管道时,有两个文件描述符。一个描述符用于将输入输入到管道(写入),而另一个描述符用于从管道获取数据(读取)。

此过程可以直观地表示如下:
半双工Linux / Unix管道简介

您可能会想,如果流程与其自身进行通信,那么实际用途是什么?

从上面的示例中,我们可以看到管道已连接到流程本身。传输的数据将从内核移回到过程。但实际上,执行上述逻辑没有任何意义。因为管道要自言自语。

因此,我们派生一个子进程。由于所有子进程都将继承任何打开的“fd”从父级开始,我们现在有2个进程相互通信。现在,我们有了多进程通信的基础。

可以用图形表示,如下所示:
半双工Linux / Unix管道简介

要将数据发送到管道,我们使用“write()””系统调用。要从管道返回数据,我们使用“read()” system call.

注意:

打开fd [0]进行读取
fd [1]用于编写。

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的

    <q id="SVZxLyo"><sup id="bUWXVuE"><u id="kwA4OwM"><article id="xnGJQyd" class="xOuIIFv"></article></u></sup></q>
      • <strong class="UbE1t8h"></strong>

      <var class="YaJDnvZ"><aside class="vUyN0kV"></aside></var>



      <meter id="VhMDCOa" class="VG5cfJ5"><canvas class="alwS12B"><nav id="K2RmYDQ"></nav></canvas></meter>
      1. <time class="pabseR2"><dt class="d8btslJ"><table id="M6opOZi" class="M8UT7w4"><aside id="yrnXpKj"></aside></table></dt></time>