Em geral, isso deve ser bom para fazer isso dessa maneira.
Quando você clica no "X" para fechar a janela do terminal, está enviando um "sinal" da sua área de trabalho (GNOME, KDE, etc.) para o aplicativo do terminal, solicitando que ele se desligue. Como você está executando o MATLAB neste shell, ele é considerado um processo filho para o aplicativo do terminal.
Portanto, parte das responsabilidades de ser um processo pai é que você, por sua vez, envia esse mesmo "sinal" para os seus filhos.
Agora, se você entender conceitualmente o que eu acabei de explicar, vamos substituir um pouco mais a terminologia real.
sinais
Primeiro, com o "sinal", há, na verdade, uma família inteira de diferentes sinais que você pode enviar para processos Unix. Para simplificar, há quatro que você verá com frequência: SIGHUP
, SIGTERM
, SIGINT
e SIGKILL
.
-
SIGHUP
The SIGHUP signal is sent to a process when its controlling terminal is closed. It was originally designed to notify the process of a serial line drop. In modern systems, this signal usually means that controlling pseudo or virtual terminal has been closed.
-
SIGTERM
The SIGTERM signal is a generic signal used to cause program termination. Unlike SIGKILL, this signal can be blocked, handled, and ignored. It is the normal way to politely ask a program to terminate.
-
SIGINT
The SIGINT (“program interrupt”) signal is sent when the user types the INTR character (normally C-c).
-
SIGKILL
The SIGKILL signal is used to cause immediate program termination. It cannot be handled or ignored, and is therefore always fatal. It is also not possible to block this signal.
NOTA: SIGINT
é o que é enviado quando você usa Ctrl + C para "quebrar" um programa da linha de comando enquanto está no meio da corrida.
qual está sendo usado?
O mais provável é que o SIGTERM
esteja sendo chamado pelo seu ambiente de janelas e transmitido para o seu terminal. É mais provável que o seu terminal envie o SIGHUP
para o MATLAB. Este sinal dá a todos os processos a oportunidade de fazer qualquer limpeza local (fechar arquivos, finalizar processos, etc.).
comando kill
Você mesmo pode enviar sinais usando o comando com um nome inadequado, kill
. Então, para enviar o sinal SIGTERM
para o seu terminal ou o SIGHUP to MATLAB, you could determine their PID using
ps 'e, em seguida, execute este comando para enviar o sinal:
$ kill -SIGTERM <PID>
ou isto:
$ kill -SIGHUP <PID>
Você pode obter uma lista completa dos sinais usando 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
...
...
Observe que os sinais têm números? Muitas vezes você os verá usados assim em vez de por seus nomes:
$ kill -15 <PID>
Ou o infame -9
, que pode matar praticamente qualquer processo.