unix-2.7.3: tests/Signals002.hs
module Main where
import Control.Concurrent
import Control.Monad
import System.Posix
-- !!! test blockSignals, raiseSignal, unblockSignals, getPendingSignals
main :: IO ()
main = do
blockSignals ( userDefinedSignal1 `addSignal` emptySignalSet )
raiseSignal userDefinedSignal1
set <- getPendingSignals
unless (userDefinedSignal1 `inSignalSet` set) $
fail "signal is missing from the set"
m <- newEmptyMVar
_ <- installHandler userDefinedSignal1
(Catch (putStrLn "hello" >> putMVar m ())) Nothing
awaitSignal (Just emptySignalSet)
takeMVar m