Os.Exit
Program 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 -> t
code c
is Code c
.
val exec : ?env:Env.assignments -> ?cwd:Fpath.t -> Fpath.t -> Cmd.t -> t
exec ?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
.