我正在阅读The TTY demystified。在“作业和会话”部分中,有一个用户使用 xterm 的示例:
$ cat
hello
hello
^Z
[1]+ Stopped cat
$ ls | sort
并且有一个表格列出了所涉及的进程:xterm、bash( 的子进程xterm)和最后三个进程(cat、ls和sort)都具有相同的 PPID(父进程 ID)——它们都是同一进程的子bash进程。
现在,我知道 bash 中的管道是在subshells中执行的。我一直认为这个子shell的东西意味着bash每个子shell都有一个额外的过程。我的问题是:不应该还有另外两个bash进程,都是第一个的孩子bash,然后ls是第一个的孩子,bash然后sort是第二个的孩子bash吗?文章中的表格是简化了,还是我对子shell的理解有误?