sig
  val with_interprocess_protect : (((unit -> 'a) -> 'a) -> 'b) -> 'b
  val with_interprocess_raise_and_okay :
    ((exn -> unit) -> (unit -> unit) -> 'b) -> 'b
  type 'a read_end
  type 'a write_end
  exception Dead
  val create : unit -> 'IVar.read_end * 'IVar.write_end
  val read : 'IVar.read_end -> 'a option
  val write : 'IVar.write_end -> '-> unit
  val close : 'IVar.write_end -> unit
end