ls
第一部分显示执行前的情况。重击是终端模拟器的子进程xterm而且他们周围的气场、环境都是一样的。这xx标记表明,两者Xterm和重击,因为父进程和子进程拥有相同的环境变量集。
第二部分显示了启动一个新进程(即 ls)后会发生什么。
- Bash 创建了一个子进程,它是其自身的精确副本,因此我将其命名为bash_c(Bash_copy 的缩写)。
- 然后,bash_c正在被 ls 进程取代。
我认为这张图简单明了、不言自明、直观且不含糊。
然而,我还没有画出 的图表(ls)
,因为我不知道它是什么样子,我有一些不同的场景来了解它的样子,但这里开始问题部分: 的图表是什么样子(ls)
?请画并评论。
答案1
for 的进程层次结构(ls)
与 for 相同ls
,即→ bash → ls
,但如果将命令列表放在括号中:(ls; ls)
,则 bash 启动一个子 shell 并运行该子 shell 中的命令。生成的进程层次结构如下所示:(→ bash → bash → ls
两个 ls 进程按顺序运行)。
您可以通过使用不带参数的 cat 而不是 ls: 来可视化这一点(cat; cat)
。第一个 cat 进程等待输入,让您有机会查看使用pstree
或top
在另一个终端中发生的情况。