sig
  exception Not_child
  type t
  type status =
    Unix.process_status =
      WEXITED of int
    | WSIGNALED of int
    | WSTOPPED of int
  val fork : unit -> Proc.t option
  val spawn : ?quiet:bool -> (unit -> unit) -> Proc.t
  val kill : ?raise:bool -> int -> Proc.t -> unit
  val wait : Proc.t -> Proc.status
  val wait_any : Proc.t list -> Proc.t
  val status_of_proc : Proc.t -> Proc.status option
  val is_child : Proc.t -> bool
  val pid_of_proc : Proc.t -> int
  val proc_of_pid : int -> Proc.t
  val procs_of_pid : int -> Proc.t list
  val exit_with_status : Proc.status -> 'a
  val autoreap : unit -> unit
  val don't_autoreap : unit -> unit
  val system : string -> Proc.status
  val system_program :
    ?path:bool -> string -> ?argv0:string -> string list -> Proc.status
  val vfork : string -> Proc.t
  val vfork_program :
    ?path:bool -> string -> ?argv0:string -> string list -> Proc.t
  val exec : string -> 'a
  val exec_program :
    ?path:bool -> string -> ?argv0:string -> string list -> 'a
  type execspec = {
    path : bool option;
    program : string;
    argv0 : string option;
    args : string list;
  }
  val execspec :
    ?path:bool -> string -> ?argv0:string -> string list -> Proc.execspec
  val with_execspec :
    Proc.execspec ->
    (?path:bool -> string -> ?argv0:string -> string list -> 'a) -> 'a
end