Os.ExitProgram exit.
type t = | Code : int -> t | (*
|
| Exec : (unit -> ('a, string) result) -> t | (* exit with |
The type for specifying program exits. Either an exit code or a function (should be) calling B00_std.Cmd.execv.
val code : int -> tcode c is Code c.
val exec : ?env:Env.assignments -> ?cwd:Fpath.t -> Fpath.t -> Cmd.t -> texec ?env ?cwd file argv is an Exec _. That has a call to Os.Cmd.execv with the corresponding arguments.
exit e exits according to e:
e is Code c, Stdlib.exit c is called and the function never returns.e is Exec execv, execv is called. This can only return with an Error _. In that case log it and call the function again with an error code - this guarantees termination.on_sigint ~hook f calls f () and returns its value. If SIGINT is signalled during that time hook is called followed by exit 130 – that is the exit code a SIGINT would produce.
on_sigint replaces an existing signal handler for Sys.sigint during time of the function call. It is restored when the function returns.
Note. Since Stdlib.exit is called Stdlib.at_exit functions are called if a SIGINT occurs during the call to f. This is not the case on an unhandled SIGINT.