module Process: Process
module Status: sig .. end
module Command_result: sig .. end
val kill : ?is_child:bool ->
       ?wait_for:Core.Time.Span.t ->
       ?signal:Core.Std.Signal.t -> Core.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.
val run : ?timeout:Core.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