在 Linux shell (Bash) 中使用命名管道的示例

新手上路,请多包涵

有人可以发布一个在 Linux 上的 Bash 中使用命名管道的简单示例吗?

原文由 Drew LeSueur 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 991
2 个回答

命名管道实际使用的最佳示例之一…

来自 http://en.wikipedia.org/wiki/Netcat

另一个有用的行为是使用 netcat 作为代理。端口和主机都可以重定向。看这个例子:

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

端口 12345 代表请求。

这将在端口 12345 上启动一个 nc 服务器,所有连接都被重定向到 google.com:80 。如果网络浏览器向 nc 发出请求,请求将发送到 google,但不会将响应发送到网络浏览器。那是因为管道是单向的。这可以使用命名管道来重定向输入和输出。

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

原文由 Brian Clements 发布,翻译遵循 CC BY-SA 4.0 许可协议

以下是命令:

 mkfifo named_pipe
echo "Hi" > named_pipe &
cat named_pipe

第一个命令创建管道。

第二个命令写入管道(阻塞)。 & 将其置于后台,因此您可以继续在同一个 shell 中键入命令。当 FIFO 被下一条命令清空时,它将退出。

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

原文由 Khaled 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题