¿Cómo bifurco un proceso que no muere cuando sale el shell?habla de "doble bifurcación":
Doble-
fork()
:(emacs &)
Los comandos entre llaves
(
)
se ejecutan en un proceso de shell separado.
¿Podría explicar por qué eso haría alguna diferencia en comparación con un simple archivo emacs &
. ¿Cuál sería el punto de ejecutarlo en un entorno subshell en primer lugar?
Respuesta1
¿Podría explicar por qué eso haría alguna diferencia en comparación con un simple archivo
emacs &
.
(emacs &)
ejecuta una subcapa que luego se ejecuta emacs &
dentro de ella, lo que significa que stdin
, en su lugar stdout
, y stderr
están vinculados a la subcapa. Se bifurca y sobrevivirá (emacs &)
a la muerte del caparazón inicial (donde se ejecutó). Solo ejecutar emacs &
mantendrá stdin
, stdout
y stderr
vinculados al shell inicial.
emacs
en realidad es un mal ejemplo de esto porque a la versión GUI no le importará perder sus stdin
, stdout
y stderr
. Puede probarlo (ls -R / &); exit
y luego buscarlo para ver que todavía se está ejecutando. Se aceptan ediciones para un mejor ejemplo que ls
.
¿Cuál sería el punto de ejecutarlo en un entorno subshell en primer lugar?
Para separarlo completamente del caparazón inicial (ver arriba).