【问题标题】:Exchange stdout and stdin between two programs在两个程序之间交换标准输出和标准输入
【发布时间】:2018-04-16 15:09:48
【问题描述】:

我想为特定命令制作自动化程序,所以我需要让它们在执行过程中交换标准输出和标准输入。

让我解释一下,如果有一个命令同时执行两个程序,

# cmd1 (pipe or redirection something) cmd2

cmd1 将标准输出作为标准输入发送到cmd2,然后cmd2 将标准输出作为标准输入发送到cmd1

用户收到的输出应该是cmd1 的输出。我怎样才能做到这一点?

【问题讨论】:

  • 管道应该可以工作。你能显示来自 cmd1 和 cmd2 的代码,这不起作用吗?
  • @AlexStiff 在 Linux 上,管道不是双向的(但它们在某些系统上,例如 Solaris 和 BSD)。我认为使用named pipes like the 32-vote solution here 会是一个更好、更便携的解决方案。另外,OP,我相信这对 unix.stackexchange.com 来说是一个更好的问题。
  • @AlexStiff 我可以在 cmd2 上处理来自 cmd1 的所有标准输出,但我无法将标准输出从 cmd2 发送到 cmd1。
  • @JNevill 我明白了,谢谢!
  • 这是 JNevill 提到的the answer

标签: bash stdout stdin


【解决方案1】:

我认为您可以为此使用 FIFO 文件。

https://www.howtoforge.com/linux-mkfifo-command/

FIFO 文件允许您命名管道。您可以创建 2 个命名管道,一个用于 cmd1|cmd2,另一个用于 cmd2 | cmd1.

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 2017-02-03
    • 1970-01-01
    • 2013-05-25
    • 2013-11-12
    • 1970-01-01
    • 2021-10-20
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多