En general, esto debería estar bien hacerlo de esta manera.
Cuando hace clic en la "X" para cerrar la ventana del terminal, se está enviando una "señal" desde su escritorio (GNOME, KDE, etc.) a la aplicación del terminal, diciéndole que se apague. Como está ejecutando MATLAB en este shell, se considera un proceso secundario para la aplicación de terminal.
Entonces, parte de las responsabilidades de ser un proceso de padres, es que a su vez envíe esta misma "señal" cercana a sus hijos.
Ahora, si entiendes conceptualmente lo que acabo de explicar, entonces sustituyamos un poco más de la terminología real.
señales
Primero con la "señal", en realidad hay toda una familia de señales diferentes que puede enviar a los procesos de Unix. Para hacerlo simple, hay 4 que en general se ven, SIGHUP
, SIGTERM
, SIGINT
, y SIGKILL
.
VISTA
La señal SIGHUP se envía a un proceso cuando su terminal de control está cerrado. Originalmente fue diseñado para notificar el proceso de una caída de línea en serie. En los sistemas modernos, esta señal generalmente significa que se ha cerrado el pseudo o terminal virtual de control.
SIGTERM
La señal SIGTERM es una señal genérica utilizada para causar la terminación del programa. A diferencia de SIGKILL, esta señal se puede bloquear, manejar e ignorar. Es la forma normal de pedir cortésmente que un programa finalice.
SIGINT
La señal SIGINT ("interrupción del programa") se envía cuando el usuario escribe el carácter INTR (normalmente Cc).
SIGKILL
La señal SIGKILL se usa para causar la terminación inmediata del programa. No puede ser manejado o ignorado, y por lo tanto siempre es fatal. Tampoco es posible bloquear esta señal.
NOTA: SIGINT
es lo que se envía cuando usa Ctrl+ Cpara "interrumpir" un programa de la línea de comando mientras está en la mitad de la ejecución.
¿Cuál se está acostumbrando?
Lo más probable SIGTERM
es que su entorno de ventanas lo llame y lo transmita a su terminal. Es probable que su terminal se envíe SIGHUP
a MATLAB. Esta señal le da a todos los procesos la oportunidad de hacer cualquier limpieza local (cerrar archivos, finalizar procesos, etc.) ellos mismos.
comando de matar
Puede enviar señales a sí mismo utilizando el comando mal llamada, kill
. Entonces, para enviar la SIGTERM
señal a su terminal o SIGHUP to MATLAB, you could determine their PID using
ps 'y luego ejecutar este comando para enviarles la señal:
$ kill -SIGTERM <PID>
o esto:
$ kill -SIGHUP <PID>
Puede obtener una lista completa de las señales con este comando:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...
¿Te das cuenta de que las señales tienen números? Muchas veces los verás usados así en lugar de por sus nombres:
$ kill -15 <PID>
O el infame -9
, que puede matar casi cualquier proceso.