在Linux中击使用命名管道的实施例在Linux中击使用命名管道的实施例(Example of us

2019-05-13 08:53发布

有人可以张贴在Linux中使用命名管道中的Bash一个简单的例子?

Answer 1:

一个实际使用命名管道的最好的例子...

从http://en.wikipedia.org/wiki/Netcat :

另一种有用的行为正在使用netcat作为代理。 两个端口和主机可以重定向。 请看下面的例子:

 nc -l 12345 | nc www.google.com 80 

端口12345表示请求。

这将启动一个nc 12345端口上的服务器和所有连接重定向到google.com:80 。 如果Web浏览器发出一个请求nc ,请求将被发送到谷歌,但响应不会发送到Web浏览器。 这是因为管道是单向的。 这可以被合作周围有一个命名管道重定向输入和输出。

 mkfifo backpipe nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe 


Answer 2:

打开两个不同的外壳,和并排离开他们身边。 在这两个,到/tmp/目录:

cd /tmp/

在第一种类型的:

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

在第二个,类型:

while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe

第一壳不会给你任何提示回来,直到你在第二个外壳程序执行代码的第二部分。 这是因为FIFO的读写阻塞。

您也可以通过做看看FIFO型ls -al myPipe ,看看这个特定类型的文件的细节。

下一步将着手中的代码的脚本!



Answer 3:

下面是命令:

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

第一个命令创建的管道。

第二个命令写入管道(粘连)。 在&把这个放到后台,所以你可以继续在同一个shell键入的命令。 当FIFO被下一个命令清空这将退出。

最后一个命令从管道中读取。



Answer 4:

1号航站楼:

$ mknod new_named_pipe p
$ echo 123 > new_named_pipe
  • 1号航站楼创建一个命名管道。
  • 它使用echo写在它的数据。
  • 它被阻塞,因为没有接收端(如管道两个命名和无名需要接收和写入结束到它)

2号航站楼:

$ cat new_named_pipe
$ 123
$ 
  • 从终端2中,增加了对数据的接收端。
  • 它使用cat读取的数据。
  • 由于接收和写入端部有用于new_named_pipe它显示的信息,并阻止停止

命名管道使用无处不在Linux中,大多数在焦炭和块的文件,我们看到ls -l命令是焦炭和块管(所有这些驻留在/ dev的)。 这些管可以阻塞和非阻塞的,并且主要优点是这些提供了一种用于IPC的最简单的方法。



文章来源: Example of using named pipes in Linux Bash
标签: linux bash pipe