Путаница в процессе 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, который не является "его" потомком

Связанный контент