Linux进程混乱

Linux进程混乱

我对Linux进程有一个疑问

情况 1:(此处没有打开 Firefox)

假设我使用此命令从命令终端打开 Firefox,firefox &那么进程将在后台启动。

现在,如果我退出终端 Firefox 也会退出

情况 2:(此处已打开一个 Firefox)

现在,如果我使用此命令从命令终端打开 Firefox,firefox &那么进程将在后台启动。

但是现在如果我退出终端,第二个 Firefox(通过终端打开)什么也不会发生,为什么?

在情况 1 中它将关闭,在情况 2 中会发生什么?

答案1

在情况 2 中,几乎发生了相同的事情。不同之处在于 Firefox 是一个单实例应用程序,如果在启动时发现其副本正在运行,则会执行以下操作:

  1. 使用以下方式将命令行参数发送到正在运行的实例工业控制计算机
  2. 退出

这是一种简化的算法,因为一些参数可能导致其他行为,但大多数时候都如上发生。

因此,在第二种情况下,后台进程存在的时间不到一秒,而之前启动的 Firefox 实例继续独立于终端运行。

答案2

在情况 1 中,你启动一个与终端“绑定”的全新 Firefox 进程,然后终止该终端,随后终止所有绑定的进程

在情况 2 中,即使您通过调用 & 启动 FF(在后台),FF 也已经打开了一个主进程,并且新窗口将作为另一个进程的“子进程”打开,因此,新窗口将绑定到该进程而不是终端。因此,终止终端仍然会终止所有绑定进程,而不是 ff,因为 ff 不是“他的”子进程

相关内容