我正在使用 启动我的图形应用程序i3bar
。当我使用 来查看系统的进程树时pstree
,我可以看到我的图形应用程序(Firefox、Chromium、Termite 等)都是systemd
(PID1) 的子级,而不是i3bar
.i3bar
既然他们是由它发起的,他们不应该是它的孩子吗?
答案1
查看 i3bar 源代码,当 i3bar 启动一个新应用程序时,它似乎会执行以下操作:
fork()
- 打电话给设置PGID,新组 id = 0(请参阅联机帮助页上有关此行为的注释)
execl()
因此,新的子进程应该与 i3bar 具有相同的父进程,因为它被提升到父进程的进程组。
您可以通过检查 i3bar 实例的进程组 ID 来验证这一点。例如:
ps axo pid,ppid,pgid,sid,comm | grep i3bar
# See 3rd column
如果 i3bar 也是 init 的子级,那么这可以解释您所看到的行为。