【问题标题】:Implementation of multipipes [duplicate]多管道的实现[重复]
【发布时间】:2015-09-21 15:13:01
【问题描述】:

我正在编写一个简单的 shell,我想实现一个管道。

那么,让我们考虑一下:

<command1> | <command2> | <command3> | ...

现在,我的想法是:

为他启动 command1 和 waitpid。然后为他运行 command2 和 waitpid。以此类推。

  1. 这是个好主意吗?

  2. 如何实现?:

    <command1> | <command2> | <command3> &
    

【问题讨论】:

  • 我认为这不是一个好主意。如果这样做,则必须将 command1 的所有输出(可能非常大)保存到某个地方(内存或磁盘),然后将其传递给 command2。
  • 这个问题类似如下:stackoverflow.com/questions/12981199/…

标签: c linux


【解决方案1】:

现在,我的想法是:

为他启动 command1 和 waitpid。然后为他运行 command2 和 waitpid。以此类推。

这是个好主意吗?

没有。也许开始阅读pipe(2)。进程必须同时运行才能通过管道进行通信。 (并且您想要为此使用实际管道,而不是一些临时存储)。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 2012-01-13
    • 2011-02-09
    • 2022-12-18
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多