2 import LibSystem(ExitCode(..), exitWith)
5 forkProcess >>= \ maybe_pid ->
7 Nothing -> raiseSignal floatingPointException
11 getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
13 Terminated sig | sig == floatingPointException -> forkChild2
14 _ -> fail "unexpected termination cause"
17 forkProcess >>= \ maybe_pid ->
19 Nothing -> exitImmediately (ExitFailure 42)
23 getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
25 Exited (ExitFailure 42) -> forkChild3
26 _ -> fail "unexpected termination cause (2)"
29 forkProcess >>= \ maybe_pid ->
31 Nothing -> exitImmediately (ExitSuccess)
35 getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
37 Exited ExitSuccess -> forkChild4
38 _ -> fail "unexpected termination cause (3)"
41 forkProcess >>= \ maybe_pid ->
43 Nothing -> raiseSignal softwareStop
47 getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
49 Stopped sig | sig == softwareStop -> enoughAlready pid
50 _ -> fail "unexpected termination cause (4)"
53 signalProcess killProcess pid >>
54 getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
56 Terminated sig | sig == killProcess -> putStr "I'm happy.\n"
57 _ -> fail "unexpected termination cause (5)"