Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / regression / signals4.sml
CommitLineData
7f918cf1
CE
1structure List =
2 struct
3 open List
4
5 fun foreach (l, f) = app f l
6 end
7structure Process = Posix.Process
8open Process Posix.Signal MLton.Signal
9
10fun print s = let open TextIO
11 in output (stdErr, s)
12 ; output (stdErr, "\n")
13 end
14
15val sleep = sleep o Time.fromSeconds
16
17val _ =
18 List.foreach
19 ([(hup, "Got a hup."),
20 (int, "You can't int me you loser."),
21 (term, "Don't even try to term me.")],
22 fn (signal, msg) =>
23 setHandler (signal, Handler.simple (fn () => print msg)))
24
25val _ =
26 case fork () of
27 NONE =>
28 let fun loop' () = loop' ()
29 in loop' ()
30 end
31 | SOME pid =>
32 let
33 fun signal s = Process.kill (K_PROC pid, s)
34 in
35 sleep 1
36 ; print "sending 1"
37 ; List.foreach ([hup, int, term], signal)
38 ; sleep 3
39 ; print "sending 2"
40 ; List.foreach ([hup, int], signal)
41 ; sleep 3
42 ; print "sending 3"
43 ; signal kill
44 ; wait ()
45 end