sig
  exception Timeout of string * string
  module Command_result :
    sig
      type t = {
        status : Core.Std.Unix.Process_status.t;
        stdout_tail : string;
        stderr_tail : string;
      }
    end
  val run :
    ?timeout:Core.Std.Time.Span.t ->
    ?working_dir:string ->
    ?input:string ->
    ?stdoutf:(string -> int -> unit) ->
    ?stderrf:(string -> int -> unit) ->
    ?tail_len:int ->
    prog:string -> args:string list -> unit -> Process.Command_result.t
end