在K&P的Unix编程环境中,写道:
"管道中的程序实际上是在同一时间运行,而不是一个接一个地运行.
这意味着管道中的程序可以是交互式的;"
程序如何同时运行?
例如:$ who | grep mary | wc -l
grep mary将如何执行,直到谁运行或如何执行wc -l直到它知道以前程序的结果?
who将输出一行数据,grep然后接收stdout,wc然后读取并计数who也可能已经写出了更多的数据grep等每个程序都需要前一个程序的结果,但它不需要所有结果才能开始工作,这就是流水线操作可行的原因.