通常,Control-C会向程序发送一个sigint,如果没有捕获它就会将其杀死.gnureadline库将为sigint安装处理程序.但是,即使在haskell中禁用这些处理程序,我仍然需要按两次Control-C才能终止程序.这是怎么回事?
import System.Console.Readline
main = do
setCatchSignals False
mainLoop
mainLoop = do
maybeLine <- readline ">"
case maybeLine of
Nothing -> putStrLn ":("
Just line -> do
putStr line
putStr " catch:"
catch <- getCatchSignals
putStrLn $ show $ catch
mainLoop
Run Code Online (Sandbox Code Playgroud)