【发布时间】:2013-12-08 00:01:20
【问题描述】:
所以,我得到了这一行脚本:
echo test | cat | grep test
您能否向我解释一下在给定以下系统调用的情况下这将如何工作:pipe()、fork()、exec() 和 dup2()?
我在这里寻找一般概述,主要是操作顺序。 到目前为止我所知道的是,shell 将使用 fork() 进行分叉,脚本的代码将使用 exec() 替换 shell 的代码。但是 pipe 和 dup2 呢?它们是如何到位的?
提前致谢。
【问题讨论】:
-
请注意,您还需要调用
close(),因此您的系统调用列表实际上不足以实现管道