Wenn ich Strg + C drücke, löst dies eine Ausnahme aus (immer in Thread 0?). Sie können dies erfassen, wenn Sie möchten - oder, was wahrscheinlicher ist, führen Sie eine Bereinigung durch und dann erneut. Aber das übliche Ergebnis ist, das Programm auf die eine oder andere Weise zum Stillstand zu bringen.Killing eine Haskell-Binärdatei
Angenommen, ich verwende den Unix-Befehl kill
. Wie ich es verstehe, sendet kill
grundsätzlich ein (konfigurierbares) Unix-Signal an den angegebenen Prozess.
Wie reagiert der Haskell RTS darauf? Ist es irgendwo dokumentiert? Ich würde vorstellen die SIGTERM
Senden die gleiche Wirkung wie das Drücken von Strg + C haben würde, aber ich weiß nicht, dass für eine Tatsache ...
(Und natürlich können Sie kill
verwenden, um Signale zu senden, haben nichts zu tun mit dem töten. noch einmal, ich würde vorstellen, dass die RTS ignorieren würde, sagen wir, SIGHUP
oder SIGPWR
, aber ich weiß es nicht sicher.)
Ctrl-C sendet 'SIGINT'. Ich würde erwarten, dass "SIGTERM" anders behandelt wird als "SIGINT". –
Ich denke, es gibt eine Standardaktion für alle von Posix und/oder dem spezifischen System definierten Signale, siehe hier: http://man7.org/linux/man-pages/man7/signal.7.html (Scrollen Sie nach unten zum Tabelle). – bennofs
@bennofs Gut zu wissen. Die Standardaktion für 'SIGINT' scheint es zu sein, den Prozess zu beenden, doch der RTS behandelt dies eindeutig speziell. Es wäre schön zu wissen, ob irgendwelche anderen Signale spezielle Behandlung erhalten ... – MathematicalOrchid