1 fun run(f
: unit
-> unit
) =
2 case Posix
.Process
.fork() of
6 val (pid
', status
) = waitpid(W_CHILD pid
, [])
7 in if pid
= pid
' andalso status
= W_EXITED
9 else raise Fail
"child failed"
11 | NONE
=> let open OS
.Process
12 in exit((f(); success
) handle _
=> failure
)
22 val (w
, out
) = MLton
.TextIO.mkstemp
"/tmp/world"
23 val _
= TextIO.closeOut out
29 fun p s
= (print s
; print
"\n")
30 in p (CommandLine
.name ())
31 ; List.app
p (CommandLine
.arguments ())
36 val _
= OS
.Process
.system (concat
[CommandLine
.name (),
37 " @MLton load-world ", w
, " -- a b c"])
39 val _
= OS
.FileSys
.remove w