module Open4
def self.propagate_exception(cid, ps_read)
def self.propagate_exception(cid, ps_read) e = Marshal.load ps_read raise Exception === e ? e : "unknown failure!" rescue EOFError # Child process did not raise exception. rescue # Child process raised exception; wait it in order to avoid a zombie. Process.waitpid2 cid raise ensure ps_read.close end