¿Por qué el comando sigue ejecutándose después de cerrar la terminal mediante la salida?

¿Por qué el comando sigue ejecutándose después de cerrar la terminal mediante la salida?

¿Por qué cuando lo hago command & exiten 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 exitcomando,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. vimivsólo recibiría una SIGHUPseñ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 SIGHUPseñ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 otro exitcomando, vimivse cerrará

Eso puede ser algo especial para ese vimiv &programa: si entro xclock &y luego exiten una línea separada en una terminal, xclockno terminará. Sin embargo, terminará si cierro el terminal desde el Xbotón, porque en ese caso bashrecibirá una SIGHUPseñal y la reenviará a xclock.

[1] bash también puede enviar un SIGHUPal salir normalmente, pero solo con shopt -s huponexit, que no es el valor predeterminado.

información relacionada