module Signal where
import Control.Exception (catch)
import Control.Monad
import Prelude hiding (catch)
import System.Posix
import Utils
----------------------------------------------------------------
sigStop :: Signal
sigStop = sigTERM
sigReload :: Signal
sigReload = sigHUP
sigRetire :: Signal
sigRetire = sigQUIT
sigInfo :: Signal
sigInfo = sigUSR2 -- sigUSR1 does not work on Linux
----------------------------------------------------------------
sendSignal :: Signal -> ProcessID -> IO ()
sendSignal sig cid = signalProcess sig cid `catch` ignore
setHandler :: Signal -> Handler -> IO ()
setHandler sig func = void $ installHandler sig func Nothing
ignoreSigChild :: IO ()
ignoreSigChild = setHandler sigCHLD Ignore