在UNIX中管道存疑

时间:2010-04-15 09:33:01

标签: unix piping

在K&的Un​​ix编程环境中P,写的是 “管道中的程序实际上是在同一时间运行,而不是一个接一个地运行。” 这意味着管道中的程序可以是交互式的;“

程序如何同时运行?
例如:$ who | grep mary | wc -l <​​br/> grep mary将如何执行,直到谁运行或wc -l将如何执行为止 知道以前程序的结果吗?

1 个答案:

答案 0 :(得分:7)

  • 所有三个程序都将启动。 grep和wc等待通过stdin输入
  • who将输出一行数据,grep将接收
  • 如果该行匹配,grep会将其写入stdoutwc将会读取并计算
  • 与此同时,who可能也在为grep等撰写更多数据

每个程序都需要前一个程序的结果,但在启动工作之前它不需要所有结果,这就是流水线操作可行的原因。