Up

module Process

: sig

Low-level process handling

This is low-level enough that you should probably be using Shell instead to dispatch processes.

#
module Status : sig
#
type t = [
| `Timeout of Core.Std.Time.Span.t
| `Exited of int
| `Signaled of Core.Std.Signal.t
]
#
val to_string : t -> string
#
val sexp_of_t : t -> Sexplib.Sexp.t
end
#
module Command_result : sig
#
type t = {
# status
: Status.t;
# stdout_tail
: string;
# stderr_tail
: string;
}
end
#
val kill : ?is_child:bool -> ?wait_for:Core.Std.Time.Span.t -> ?signal:Core.Std.Signal.t -> Core.Std.Pid.t -> unit

kills a process by sending signal; waiting for wait_for and then sending a sigkill. You need to set is_child to true when killing child processes or run waitpid on them in another.

Raises Failure if the target program hangs for more that wait_for after receiving the sigkill.
#
val run : ?timeout:Core.Std.Time.Span.t -> ?use_extra_path:bool -> ?working_dir:string -> ?setuid:int -> ?setgid:int -> ?env:[
| `Extend of (string * string) list
| `Replace of (string * string) list
] -> ?input:string -> ?keep_open:bool -> ?stdoutf:(string -> int -> unit) -> ?stderrf:(string -> int -> unit) -> ?tail_len:int -> prog:string -> args:string list -> unit -> Command_result.t
end