diff options
| author | Tomoyuki Sahara <[email protected]> | 2015-04-03 10:05:09 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2015-04-03 10:05:09 +0900 |
| commit | e92fd762482eb9f5275f066ae40dfdce201d33ee (patch) | |
| tree | 2a9321b2c7a8ea46a2ac86c919dc5717d004fd93 | |
| parent | 3a97a453c486cd1ce9456970b686ab24f8126980 (diff) | |
| download | mruby-e92fd762482eb9f5275f066ae40dfdce201d33ee.tar.gz mruby-e92fd762482eb9f5275f066ae40dfdce201d33ee.zip | |
wait for child processes when we close pipes. fixes #37.
| -rw-r--r-- | src/io.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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."); } |
