Como faço para bifurcar um processo que não morre quando o shell sai?fala sobre "bifurcação dupla":
Dobro-
fork()
:(emacs &)
Os comandos entre colchetes
(
)
são executados em um processo de shell separado.
Você poderia explicar por que isso faria alguma diferença em comparação com um arquivo emacs &
. Qual seria o sentido de executá-lo em um ambiente subshell em primeiro lugar?
Responder1
Você poderia explicar por que isso faria alguma diferença em comparação com um arquivo
emacs &
.
(emacs &)
executa um subshell que é executado emacs &
dentro dele, o que significa que seus stdin
, stdout
e stderr
estão vinculados ao subshell. Ele se torna bifurcado duas vezes e sobreviverá (emacs &)
à morte do shell inicial (onde foi executado). A execução apenas emacs &
manterá stdin
, stdout
e stderr
vinculado ao shell inicial.
emacs
é na verdade um mau exemplo disso porque a versão GUI não se importará com a perda de stdin
, stdout
, e stderr
. Você pode tentar (ls -R / &); exit
e grep para ver se ainda está em execução. Edições são bem-vindas para um exemplo melhor do que ls
.
Qual seria o sentido de executá-lo em um ambiente subshell em primeiro lugar?
Para separá-lo completamente da casca inicial (veja acima).