(* Process *)type status = intval success : status = 0;#if defined(win32)val failure : status = 1;#elseval failure : status = ~1;#endifprim_val system : string -> status = 1 "sml_system";local prim_val getenv_ : string -> string = 1 "sys_getenv";in fun getEnv s = (SOME (getenv_ s)) handle _ => NONEendval terminate = BasicIO.exit;local val exittasks = (ref []) : (unit -> unit) list refin fun atExit newtask = exittasks := newtask :: !exittasks; fun exit status = (List.app (fn f => f ()) (!exittasks); terminate status);end
(* Process *)
type status = int
val success : status = 0;
#if defined(win32)
val failure : status = 1;
#else
val failure : status = ~1;
#endif
prim_val system : string -> status = 1 "sml_system";
local
prim_val getenv_ : string -> string = 1 "sys_getenv";
in
fun getEnv s =
(SOME (getenv_ s)) handle _ => NONE
end
val terminate = BasicIO.exit;
local
val exittasks = (ref []) : (unit -> unit) list ref
in
fun atExit newtask =
exittasks := newtask :: !exittasks;
fun exit status =
(List.app (fn f => f ()) (!exittasks);
terminate status);
end