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