1

Как мне развить процесс, который не умирает при выходе из оболочки? говорит о "двойном разветвлении":

  • Двойная fork():

    (emacs &)
    

    Команды внутри фигурных скобок ( ) запускаются в отдельном процессе оболочки.

Не могли бы вы объяснить, почему это будет иметь какое-то значение по сравнению с простым emacs & . Какой смысл в первую очередь запускать его в среде subhell?

1 ответ1

0

Не могли бы вы объяснить, почему это будет иметь какое-то значение по сравнению с простым emacs & .

(emacs &) запускает подоболочку, которая затем запускает emacs & внутри него, что означает, что его stdin , stdout и stderr вместо этого связаны с подоболочкой. Он становится раздвоенным и выживет после того, как умирает начальная оболочка (где (emacs &) была запущена). Запуск только emacs & будет держать stdin , stdout и stderr привязанными к исходной оболочке.

emacs на самом деле плохой пример для этого, потому что версия GUI не будет заботиться о том, что она потеряла свои stdin , stdout и stderr . Вы можете попробовать с (ls -R / &); exit и затем grep для этого, чтобы видеть, что это все еще работает. Редактирование приветствуется для лучшего примера, чем ls .

Какой смысл в первую очередь запускать его в среде subhell?

Чтобы полностью отделить его от начальной оболочки (см. Выше).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .