summaryrefslogtreecommitdiffhomepage
path: root/src/io.c
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2015-04-03 10:05:09 +0900
committerTomoyuki Sahara <[email protected]>2015-04-03 10:05:09 +0900
commite92fd762482eb9f5275f066ae40dfdce201d33ee (patch)
tree2a9321b2c7a8ea46a2ac86c919dc5717d004fd93 /src/io.c
parent3a97a453c486cd1ce9456970b686ab24f8126980 (diff)
downloadmruby-e92fd762482eb9f5275f066ae40dfdce201d33ee.tar.gz
mruby-e92fd762482eb9f5275f066ae40dfdce201d33ee.zip
wait for child processes when we close pipes. fixes #37.
Diffstat (limited to 'src/io.c')
-rw-r--r--src/io.c7
1 files changed, 7 insertions, 0 deletions
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.");
}