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; }
  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