From e92fd762482eb9f5275f066ae40dfdce201d33ee Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Fri, 3 Apr 2015 10:05:09 +0900 Subject: wait for child processes when we close pipes. fixes #37. --- src/io.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/io.c b/src/io.c index 4f7fd25f0..b72eeada6 100644 --- a/src/io.c +++ b/src/io.c @@ -351,6 +351,13 @@ fptr_finalize(mrb_state *mrb, struct mrb_io *fptr, int noraise) } } + if (fptr->pid != 0) { + pid_t pid; + do { + pid = waitpid(fptr->pid, NULL, 0); + } while (pid == -1 && errno == EINTR); + } + if (!noraise && n != 0) { mrb_sys_fail(mrb, "fptr_finalize failed."); } -- cgit v1.2.3