Jeśli naciśnie się Ctrl + C, spowoduje to wyjątek (zawsze w wątku 0?). Możesz go złapać, jeśli chcesz - lub, co bardziej prawdopodobne, przeprowadzić pewne porządki, a następnie ponownie je rzucić. Ale zwykle skutkuje to zatrzymaniem programu w taki czy inny sposób.Zabicie binarki Haskella
Załóżmy teraz, że używam polecenia Unix kill
. Jak rozumiem, kill
zasadniczo wysyła (konfigurowalny) sygnał Unix do określonego procesu.
Jak reaguje RTS Haskell? Czy gdzieś to dokumentuje? Chciałbym wyobrazić że wysyłanie SIGTERM
miałoby ten sam efekt co naciśnięcie klawiszy Ctrl + C, ale nie wiem, że na pewno, że ...
(i, oczywiście, można użyć kill
do wysyłania sygnałów, że nie mają nic wspólnego z zabijania w ogóle. Ponownie, chciałbym wyobrazić że RTS będzie ignorować, powiedzmy, SIGHUP
lub SIGPWR
, ale nie wiem na pewno.)
Ctrl-C wysyła 'SIGINT'. Spodziewałbym się, że 'SIGTERM' będzie traktowany inaczej niż" SIGINT ". –
Myślę, że istnieje domyślna akcja dla wszystkich sygnałów zdefiniowanych przez Posix i/lub konkretny system, patrz tutaj: http://man7.org/linux/man-pages/man7/signal.7.html (Przewiń w dół do stół). – bennofs
@bennofs Warto wiedzieć. Domyślna akcja dla 'SIGINT' wydaje się zakończyć proces, ale RTS wyraźnie obsługuje to specjalnie. Byłoby miło wiedzieć, czy jakikolwiek inny sygnał jest traktowany w specjalny sposób ... – MathematicalOrchid