Bash 命名管道

首页 / Shell/Bash / Bash 命名管道

在大多数类似 Unix 的操作系统中,有可能创建一种特殊类型的文件,叫做命名管道。命名管道用来在 两个进程之间建立连接,也可以像其它类型的文件一样使用。

命令管道的行为类似于文件,但实际上形成了先入先出(FIFO)的缓冲。和普通(未命令的)管道一样, 数据从一端进入,然后从另一端出现。通过命令管道,有可能像这样设置一些东西:

process1 > named_pipe

process2 < named_pipe

表现出来就像这样:

process1 | process2

设置一个命名管道

使用 mkfifo 命令能够创建命令管道:

$ mkfifo pipe1
$ ls -l pipe1
prw-r--r-- 1 me me 0 2009-07-17 06:41 pipe1

这里我们使用 mkfifo 创建了一个名为 pipe1 的命名管道。使用 ls 命令,我们查看这个文件, 看到位于属性字段的第一个字母是 “p”,表明它是一个命名管道。

使用命名管道

为了演示命名管道是如何工作的,我们将需要两个终端窗口(或用两个虚拟控制台代替)。 在第一个终端中,我们输入一个简单命令,并把命令的输出重定向到命名管道:

$ ls -l > pipe1

我们按下 Enter 按键之后,命令将会挂起。这是因为在管道的另一端没有任何接受数据。当这种现象发生的时候, 据说是管道阻塞了。一旦我们绑定一个进程到管道的另一端,该进程开始从管道中读取输入的时候,这种情况会消失。 使用第二个终端窗口,我们输入这个命令。

$ cat < pipe1

然后产自第一个终端窗口的目录列表出现在第二个终端中,并作为来自 cat 命令的输出。在第一个终端 窗口中的 ls 命令一旦它不再阻塞,会成功地结束。

教程来源:网道(WangDoc.com)以及 Github 无私奉献

这一章《Bash 命名管道》你学到了什么?做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

白话法律42讲 -〔周甲徳 - 47讲〕

.NET Core开发实战 -〔肖伟宇 - 61讲〕

代码之丑 -〔郑晔 - 21讲〕

说透元宇宙 -〔方军 - 14讲〕

解析平面文件(位置文本文件)以读取波长

用数字和字母对 VARCHAR 列进行排序

我怎样才能制作一个倾斜的倾斜 div 框

CSS 不适用于页脚 <p> 元素

字母序列到数字序列 R

3.11 Lab:最小数

视频推荐〔Shell/Bash - 12_shell数据比较运算〕

更多视频 »