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 ,它不是「他的」孩子

相關內容