sig
  type t
  val pid : Process.t -> Core.Std.Pid.t
  val stdin : Process.t -> Writer.t
  val stdout : Process.t -> Reader.t
  val stderr : Process.t -> Reader.t
  type env =
      [ `Extend of (string * string) list
      | `Replace of (string * string) list ]
  type 'a with_create_args =
      ?working_dir:string ->
      ?env:Process.env -> prog:string -> args:string list -> unit -> 'a
  val create :
    Process.t Core.Std.Or_error.t Import.Deferred.t Process.with_create_args
  module Output :
    sig
      type t = {
        stdout : string;
        stderr : string;
        exit_status : Core.Std.Unix.Exit_or_signal.t;
      }
      val sexp_of_t : Process.Output.t -> Sexplib.Sexp.t
    end
  val wait : Process.t -> Process.Output.t Import.Deferred.t
  val run :
    string Core.Std.Or_error.t Import.Deferred.t Process.with_create_args
  val sexp_of_t : Process.t -> Sexplib.Sexp.t
  val env_of_sexp : Sexplib.Sexp.t -> Process.env
  val __env_of_sexp__ : Sexplib.Sexp.t -> Process.env
  val sexp_of_env : Process.env -> Sexplib.Sexp.t
end