diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-06-10 11:21:07 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-06-10 11:21:07 +0000 |
commit | 4b70fab9153e5082a68196f7a9287ba5685860f8 (patch) | |
tree | a81b3498b51033d176accfe379abf488e01dffc3 | |
parent | a9e8b77697642e0be72af2a3198ddd025c2b31f3 (diff) | |
download | ruby-4b70fab9153e5082a68196f7a9287ba5685860f8.tar.gz |
* process.c (rb_fork_ruby): new function.
(rb_f_fork): use rb_fork_ruby instead of rb_fork.
(rb_daemon): ditto.
* io.c (pipe_open): use rb_fork_ruby instead of rb_fork.
* internal.h (rb_fork_ruby): declared.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | internal.h | 2 | ||||
-rw-r--r-- | io.c | 2 | ||||
-rw-r--r-- | process.c | 12 |
4 files changed, 22 insertions, 4 deletions
@@ -1,3 +1,13 @@ +Sun Jun 10 20:19:40 2012 Tanaka Akira <akr@fsij.org> + + * process.c (rb_fork_ruby): new function. + (rb_f_fork): use rb_fork_ruby instead of rb_fork. + (rb_daemon): ditto. + + * io.c (pipe_open): use rb_fork_ruby instead of rb_fork. + + * internal.h (rb_fork_ruby): declared. + Sun Jun 10 18:58:16 2012 Akinori MUSHA <knu@iDaemons.org> * lib/net/http/response.rb: Remove a duplicated rdoc and leave a diff --git a/internal.h b/internal.h index adc7b5d8f1..375ff5f88d 100644 --- a/internal.h +++ b/internal.h @@ -166,6 +166,8 @@ st_index_t rb_hash_proc(st_index_t hash, VALUE proc); #define ARGVSTR2ARGC(argv_str) (RSTRING_LEN(argv_str) / sizeof(char *) - 2) #define ARGVSTR2ARGV(argv_str) ((char **)RSTRING_PTR(argv_str) + 1) +rb_pid_t rb_fork_ruby(int *status); + /* rational.c */ VALUE rb_lcm(VALUE x, VALUE y); VALUE rb_rational_reciprocal(VALUE x); @@ -5541,7 +5541,7 @@ pipe_open(struct rb_exec_arg *eargp, const char *modestr, int fmode, convconfig_ pid = rb_fork_async_signal_safe(&status, popen_exec, &arg, arg.execp->redirect_fds, errmsg, sizeof(errmsg)); } else { - pid = rb_fork(&status, 0, 0, Qnil); + pid = rb_fork_ruby(&status); if (pid == 0) { /* child */ rb_thread_atfork(); popen_redirect(&arg); @@ -3011,6 +3011,12 @@ rb_fork(int *status, int (*chfunc)(void*), void *charg, VALUE fds) } +rb_pid_t +rb_fork_ruby(int *status) +{ + return rb_fork(status, NULL, NULL, Qnil); +} + #endif #if defined(HAVE_FORK) && !defined(CANNOT_FORK_WITH_PTHREAD) @@ -3044,7 +3050,7 @@ rb_f_fork(VALUE obj) rb_secure(2); - switch (pid = rb_fork(0, 0, 0, Qnil)) { + switch (pid = rb_fork_ruby(NULL)) { case 0: rb_thread_atfork(); if (rb_block_given_p()) { @@ -5241,7 +5247,7 @@ rb_daemon(int nochdir, int noclose) #else int n; - switch (rb_fork(0, 0, 0, Qnil)) { + switch (rb_fork_ruby(NULL)) { case -1: rb_sys_fail("daemon"); case 0: @@ -5253,7 +5259,7 @@ rb_daemon(int nochdir, int noclose) proc_setsid(); /* must not be process-leader */ - switch (rb_fork(0, 0, 0, Qnil)) { + switch (rb_fork_ruby(NULL)) { case -1: return -1; case 0: |