sig
  type text = string list
  type result = {
    st : Unix.process_status;
    out : JoinTextProc.Sync.text;
    err : JoinTextProc.Sync.text;
  }
  type t = {
    wait : unit -> JoinTextProc.Sync.result;
    kill : int -> unit;
    gkill : int -> unit;
  }
  val command : string -> string array -> JoinTextProc.Sync.t
  val open_in : string -> string array -> JoinTextProc.Sync.t
  val open_in_out :
    string -> string array -> JoinTextProc.Sync.text -> JoinTextProc.Sync.t
  val open_full :
    string -> string array -> JoinTextProc.Sync.text -> JoinTextProc.Sync.t
end