Em geral, isso deve ser bom para fazê-lo dessa maneira.
Quando você clica no "X" para fechar a janela do terminal, está enviando um "sinal" da área de trabalho (GNOME, KDE, etc.) para o aplicativo do terminal, dizendo-lhe para se desligar. Como você está executando o MATLAB neste shell, é 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" próximo a seus filhos.
Agora, se você entende conceitualmente o que acabei de explicar, vamos substituir um pouco mais a terminologia real.
sinais
Primeiro com o "sinal", na verdade há toda uma família de sinais diferentes que você pode enviar para os processos do Unix. Para mantê-lo simples, existem 4 que muitas vezes você vai ver, SIGHUP
, SIGTERM
, SIGINT
, e SIGKILL
.
SIGHUP
O sinal SIGHUP é enviado para um processo quando seu terminal de controle é fechado. Foi originalmente projetado para notificar o processo de queda da linha serial. Nos sistemas modernos, esse sinal geralmente significa que o controle de pseudo ou terminal virtual foi fechado.
SIGTERM
O sinal SIGTERM é um sinal genérico usado para causar o encerramento do programa. Ao contrário do SIGKILL, esse sinal pode ser bloqueado, manipulado e ignorado. É a maneira normal de pedir educadamente que um programa seja encerrado.
SIGINT
O sinal SIGINT (“interrupção do programa”) é enviado quando o usuário digita o caractere INTR (normalmente Cc).
SIGKILL
O sinal SIGKILL é usado para causar o encerramento imediato do programa. Ele não pode ser manipulado ou ignorado e, portanto, é sempre fatal. Também não é possível bloquear este sinal.
NOTA: SIGINT
é o que é enviado quando você usa Ctrl+ Cpara "interromper" um programa na linha de comando enquanto ele está no meio da execução.
qual deles está se acostumando?
Provavelmente, isso SIGTERM
está sendo chamado pelo seu ambiente de janelas e passado para o seu terminal. O seu terminal provavelmente estará enviando SIGHUP
para o MATLAB. Esse sinal oferece a todos os processos a oportunidade de fazer qualquer limpeza local (fechamento de arquivos, finalização de processos etc.).
comando kill
Você pode enviar sinais usando o comando com nome incorreto kill
,. Então, para enviar o SIGTERM
sinal ao seu terminal ou ao SIGHUP to MATLAB, you could determine their PID using
ps` e 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ê as vê usadas dessa maneira, e não pelos nomes:
$ kill -15 <PID>
Ou o infame -9
, que pode matar praticamente qualquer processo.