以下简单的命令应该可以说明我的问题:
gnome-terminal --tab -t "Tab 1" -e "/bin/bash" --tab -t "Tab 2" -e "/bin/bash"
这应该会打开一个带有两个选项卡和一个活动 bash shell 的新窗口。如果我立即使用 GUI [x] 关闭这个新窗口,然后执行命令ps
,则一个(在本例中)子进程 ( /bin/bash
) 将保持打开状态。
我发现这对应于在某个时间点从未激活(通过单击它们)的所有非活动选项卡。因此,如果我们制作一个与上面的示例类似的新命令,但有 5 个选项卡而不是 2 个,并且您在运行该命令后立即关闭此窗口,则 4 个子进程将继续运行。
这是特殊的部分......如果您单击每个选项卡以使其处于活动状态,然后关闭窗口,所有子进程都将被终止,正如人们所期望的那样。
这是 gnome-terminal 中的一个错误吗?
如何确保这些进程已关闭而不是保持打开状态?
经过进一步调查后发现,打开的进程的父进程 ID 是执行上述命令的终端的 PID。我希望关闭新生成的窗口足以杀死与每个选项卡对应的子进程(无论它是否已激活),而不必杀死原始的源终端。希望这是有道理的。