import Control.Concurrent import Control.Monad import System.Posix import System.Exit main = do installHandler sigINT (Catch $ do putStrLn "signal caught" >> exitSuccess) Nothing pid <- forkProcess $ forever $ return () threadDelay 2000000 putStrLn "Killing" signalProcess sigINT pid threadDelay 2000000 putStrLn "hihi"