【发布时间】:2012-07-19 20:17:56
【问题描述】:
派生管道内衬子进程的最佳技术是什么?
我当前的程序需要运行另一个进程,这实际上是由管道链接的几个命令。我不需要知道命令的输出是失败还是成功,所以我使用 fork/exec。
命令行上的等价物是
/path/to/A arg1 arg2 | /path/to/B argB1 | /path/to/C
注意:使用脚本并不实用,因为它的 A/B/C 将来可能会发生变化。
我想到的两种技术是:
递归分叉。连接下一个 fork 中可供子级使用的父级(输入到其父级)输出。
在顶层创建所有管道。
然后使用循环来分叉所有可以正确连接管道的子节点。
【问题讨论】:
-
后者是 shell 所做的,大概是有充分理由的。
-
@OliCharlesworth:你有参考吗?或者最好是示例代码的链接,这样我就不会重新发明轮子。
-
如果你在Linux上工作,你可以通过运行
pstree来推断这一点,它显示了所有进程的父子关系。