У меня есть одно сомнение в процессе Linux
случай 1:(здесь Firefox не открыт)
Предположим, если я открою Firefox из командного терминала с помощью этой команды, firefox &
то процесс запустится в фоновом режиме.
Теперь, если я выйду из Терминала, Firefox также выйдет
случай 2:(здесь один Firefox уже открыт)
Теперь, если я открою Firefox из командного терминала с помощью этой команды, firefox &
то процесс запустится в фоновом режиме.
Но теперь, если я выйду из терминала, ничего не будет делать с Firefox (открытым через терминал), почему?
В случае 1 он закроется, что происходит в случае 2?
решение1
В случае 2 происходит почти то же самое. Разница в том, что Firefox — это приложение с одним экземпляром, и если при запуске он обнаруживает свою запущенную копию, то делает следующее:
- Отправляет аргументы командной строки запущенному экземпляру с помощьюМПК
- Выходы
Это упрощенный алгоритм, поскольку некоторые аргументы могут привести к другому поведению, но в большинстве случаев все происходит так, как описано выше.
Таким образом, во втором случае фоновый процесс существует менее секунды, в то время как ранее запущенный экземпляр Firefox продолжает работать независимо от терминала.
решение2
В случае 1 вы запускаете совершенно новую процедуру Firefox, «привязанную» к терминалу, убивая терминал, и он последовательно убивает все привязанные процессы.
В случае 2, даже если вы запустите FF, вызвав & (в фоновом режиме), у FF уже будет открыт главный процесс, и новое окно будет открыто как "потомок" другого, поэтому привязано к нему, а не к терминалу. Следовательно, уничтожение терминала все равно убьет все связанные процессы, а не ff, который не является "его" потомком