sig
  module Exit_code :
    sig
      type t = [ `Exited of int | `Signaled of int | `Stopped of int ]
      val to_string : Ketrew_unix_process.Exit_code.t -> string
      val to_log : Ketrew_unix_process.Exit_code.t -> Ketrew_pervasives.Log.t
    end
  val exec :
    ?bin:string ->
    string list ->
    (string * string * Ketrew_unix_process.Exit_code.t,
     [> `Process of [> `Exec of string * string list ] * [> `Exn of exn ] ])
    Ketrew_unix_io.Deferred_result.t
  val succeed :
    ?bin:string ->
    string list ->
    (string * string,
     [> `Process of
          [> `Exec of string * string list ] *
          [> `Exn of exn | `Non_zero of string ] ])
    Ketrew_unix_io.Deferred_result.t
  val error_to_string :
    [< `Process of
         [< `Exec of string * string list ] *
         [< `Exn of exn | `Non_zero of string ] ] ->
    string
end