Im Allgemeinen sollte dies in Ordnung sein, um es auf diese Weise zu tun.
Wenn Sie auf das "X" klicken, um das Terminalfenster zu schließen, sendet dieses ein "Signal" von Ihrem Desktop (GNOME, KDE usw.) an die Terminalanwendung und weist diese an, sich selbst herunterzufahren. Da Sie MATLAB in dieser Shell ausführen, wird es als untergeordneter Prozess für die Terminalanwendung betrachtet.
Ein Teil der Verantwortung eines Elternprozesses besteht darin, dass Sie Ihren Kindern dasselbe Signal senden.
Wenn Sie nun begrifflich verstehen, was ich gerade erklärt habe, lassen Sie uns ein bisschen mehr von der eigentlichen Terminologie ersetzen.
Signale
Erstens gibt es mit dem "Signal" tatsächlich eine ganze Familie verschiedener Signale , die Sie an Unix-Prozesse senden können. Um es einfach zu halten gibt es 4 , dass Sie oft sehen, SIGHUP
, SIGTERM
, SIGINT
, und SIGKILL
.
SEUFZEND
Das SIGHUP-Signal wird an einen Prozess gesendet, wenn sein steuerndes Terminal geschlossen ist. Es wurde ursprünglich entwickelt, um den Prozess einer Unterbrechung der seriellen Leitung zu melden. In modernen Systemen bedeutet dieses Signal normalerweise, dass die Steuerung des Pseudo- oder virtuellen Terminals geschlossen wurde.
SIGTERM
Das SIGTERM-Signal ist ein generisches Signal, das zum Beenden des Programms verwendet wird. Im Gegensatz zu SIGKILL kann dieses Signal blockiert, verarbeitet und ignoriert werden. Es ist die übliche Art, ein Programm höflich zum Abbruch aufzufordern.
ZEICHEN
Das SIGINT-Signal ("Programm-Interrupt") wird gesendet, wenn der Benutzer das INTR-Zeichen (normalerweise Cc) eingibt.
SIGKILL
Das Signal SIGKILL wird verwendet, um das Programm sofort zu beenden. Es kann nicht behandelt oder ignoriert werden und ist daher immer tödlich. Es ist auch nicht möglich, dieses Signal zu blockieren.
HINWEIS: SIGINT
Wird gesendet, wenn Sie Ctrl+ verwenden C, um ein Programm von der Befehlszeile aus zu "unterbrechen", während es gerade ausgeführt wird.
welches wird benutzt?
Höchstwahrscheinlich SIGTERM
wird das von Ihrer Windows-Umgebung angerufen und an Ihr Terminal weitergeleitet. Ihr Terminal sendet dann höchstwahrscheinlich SIGHUP
an MATLAB. Dieses Signal gibt allen Prozessen die Möglichkeit, lokale Bereinigungen (Schließen von Dateien, Beenden von Prozessen usw.) selbst durchzuführen.
Befehl töten
Sie können selbst Signale mit dem schlecht benannten Befehl senden kill
. So senden Sie das SIGTERM
Signal an Ihr Terminal oder an das SIGHUP to MATLAB, you could determine their PID using
ps` und führen dann den folgenden Befehl aus, um ihnen das Signal zu senden:
$ kill -SIGTERM <PID>
oder dieses:
$ kill -SIGHUP <PID>
Mit diesem Befehl können Sie eine vollständige Liste der Signale abrufen:
$ 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
...
...
Beachten Sie, dass die Signale Zahlen haben? Sie werden oft sehen, wie sie so verwendet werden, anstatt nach ihren Namen:
$ kill -15 <PID>
Oder die berüchtigten -9
, die so ziemlich jeden Prozess töten können.