In generale questo dovrebbe andare bene per farlo in questo modo.
Quando si fa clic sulla "X" per chiudere la finestra del terminale, si sta inviando un "segnale" dal desktop (GNOME, KDE, ecc.) All'applicazione del terminale, dicendogli di chiudersi. Dal momento che stai eseguendo MATLAB in questa shell è considerato un processo figlio per l'applicazione terminale.
Quindi parte delle responsabilità di essere un processo genitore è che a sua volta invii questo stesso "segnale" vicino ai tuoi figli.
Ora, se capisci concettualmente ciò che ho appena spiegato, sostituiamo un po 'di più la vera terminologia.
segnali
Innanzitutto con il "segnale", in realtà esiste un'intera famiglia di segnali diversi che è possibile inviare ai processi Unix. Per mantenere le cose semplici ci sono 4 che si vedono spesso, SIGHUP
, SIGTERM
, SIGINT
, e SIGKILL
.
SIGHUP
Il segnale SIGHUP viene inviato a un processo quando il suo terminale di controllo è chiuso. È stato originariamente progettato per notificare il processo di caduta della linea seriale. Nei sistemi moderni, questo segnale di solito significa che il controllo di pseudo o terminale virtuale è stato chiuso.
SIGTERM
Il segnale SIGTERM è un segnale generico utilizzato per causare la chiusura del programma. A differenza di SIGKILL, questo segnale può essere bloccato, gestito e ignorato. È il modo normale di chiedere educatamente a un programma di terminare.
SIGINT
Il segnale SIGINT ("interruzione programma") viene inviato quando l'utente digita il carattere INTR (normalmente Cc).
SIGKILL
Il segnale SIGKILL viene utilizzato per causare la chiusura immediata del programma. Non può essere gestito o ignorato ed è quindi sempre fatale. Inoltre, non è possibile bloccare questo segnale.
NOTA: SIGINT
è ciò che viene inviato quando si utilizza Ctrl+ Cper "interrompere" un programma dalla riga di comando mentre è in esecuzione.
quale si sta abituando?
Molto probabilmente SIGTERM
viene chiamato dall'ambiente di finestre e trasmesso al terminale. È quindi probabile che il tuo terminale invii SIGHUP
a MATLAB. Questo segnale offre a tutti i processi l'opportunità di eseguire da soli qualsiasi ripulitura locale (chiusura di file, processi di chiusura, ecc.).
comando di uccisione
È possibile inviare i segnali da soli utilizzando il comando infelicemente chiamato, kill
. Quindi, per inviare il SIGTERM
segnale al tuo terminale o SIGHUP to MATLAB, you could determine their PID using
ps` e quindi eseguire questo comando per inviare loro il segnale:
$ kill -SIGTERM <PID>
o questo:
$ kill -SIGHUP <PID>
Puoi ottenere un elenco completo dei segnali usando questo 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
...
...
Notare che i segnali hanno numeri? Spesso le vedrai usate in quel modo invece che con i loro nomi:
$ kill -15 <PID>
O il famigerato -9
, che può uccidere praticamente qualsiasi processo.