
¿Por qué cuando lo hago command & exit
en la terminal (como vimiv & exit
)?vimiv¿Sigue funcionando cuando la terminal está cerrada? Esperabavimivpara comenzar como un trabajo en segundo plano en la terminal actual y luego recibir unsuspirocuando la terminal está cerrada y también sale. Por ejemplo, si ejecuto vimiv &
seguido de otro exit
comando,vimivcerrará
Respuesta1
Esperaba que vimiv comenzara como un trabajo en segundo plano en la terminal actual y luego recibiera un suspiro cuando la terminal se cerrara y también saliera.
No, eso no es lo que sucede. vimiv
sólo recibiría una SIGHUP
señal (del núcleo) si fuera unprimer planotrabajo, o si era uninterrumpidotrabajo de fondo. Pero no es ninguna de las dos cosas: es un trabajo en segundo plano en ejecución.
O si bash (bash en particular, no cualquier shell en general) hubiera recibido una SIGHUP
señal y la hubiera reenviado a todos sus trabajos no repudiados. Pero en su ejemplo, los shells salen normalmente a través de exit
, no porque así lo indique SIGHUP
[1].
Por ejemplo, si ejecuto
vimiv &
seguido de otroexit
comando,vimiv
se cerrará
Eso puede ser algo especial para ese vimiv &
programa: si entro xclock &
y luego exit
en una línea separada en una terminal, xclock
no terminará. Sin embargo, terminará si cierro el terminal desde el X
botón, porque en ese caso bash
recibirá una SIGHUP
señal y la reenviará a xclock
.
[1] bash también puede enviar un SIGHUP
al salir normalmente, pero solo con shopt -s huponexit
, que no es el valor predeterminado.