在unix中执行具有管道的命令时将使用多少个进程?

时间:2013-09-13 20:15:00

标签: linux shell unix command-line process

在unix中执行“cat filename | grep poem | wc -l”命令时将使用多少个进程。 是否有1个进程,2个进程,3个进程......来执行上述命令。

2 个答案:

答案 0 :(得分:1)

管道从第一个进程获取输出流,并使其成为下一个进程的输入流。您可以保证每个命令都有一个进程,但每个进程都可以根据其操作创建子进程。

答案 1 :(得分:1)

它实际上取决于shell。在bash中应该有3个进程。我在管道中运行了3次睡眠代替这些命令,并在将它们放在背景上后立即运行pstree。这就是我得到的:

> sleep 4s | sleep 4s | sleep 4s & pstree
 │         ├─bash───bash─┬─pstree
 │         │             ├─3*[sleep]

一个子shell:

> ( sleep 4s | sleep 4s | sleep 4s ) & pstree
 │         ├─bash───bash─┬─bash───3*[sleep]
 │         │             ├─pstree