O que é double forking?

1

Como faço para bifurcar um processo que não morre quando o shell sai? fala sobre "double forking":

  • Double-fork():

    (emacs &)
    

    Commands inside braces ( ) are run in a separate shell process.

Você poderia explicar por que isso faria alguma diferença em comparação a um simples emacs & ? Qual seria o sentido de executá-lo em um ambiente subshell em primeiro lugar?

    
por Micha Wiedenmann 05.02.2018 / 10:53

1 resposta

0

Could you explain why that would make any difference compared to a simple emacs &.

(emacs &) executa um subshell que, em seguida, executa emacs & dentro dele, o que significa que stdin , stdout e stderr estão vinculados à subshell. Ele se torna double-bifurcado e sobreviverá ao shell inicial (onde (emacs &) foi executado) morrendo. A execução apenas de emacs & manterá os stdin , stdout e stderr vinculados ao shell inicial.

emacs é, na verdade, um mau exemplo disso, porque a versão da GUI não se importará se perdeu seus stdin , stdout e stderr . Você pode tentar com (ls -R / &); exit e depois grep para ver que ainda está em execução. Edita boas-vindas para um exemplo melhor do que ls .

What would be the point of running it in a subshell environment in the first place?

Para separá-lo completamente do shell inicial (veja acima).

    
por 12.03.2018 / 03:39

Tags