aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-06-10 11:21:07 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-06-10 11:21:07 +0000
commit4b70fab9153e5082a68196f7a9287ba5685860f8 (patch)
treea81b3498b51033d176accfe379abf488e01dffc3
parenta9e8b77697642e0be72af2a3198ddd025c2b31f3 (diff)
downloadruby-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--ChangeLog10
-rw-r--r--internal.h2
-rw-r--r--io.c2
-rw-r--r--process.c12
4 files changed, 22 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 054bc4fcac..a0fbb8cb66 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
diff --git a/io.c b/io.c
index 66b7093e0c..5b1a6fcccd 100644
--- a/io.c
+++ b/io.c
@@ -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);
diff --git a/process.c b/process.c
index 1d17ef4f96..485a5ef600 100644
--- a/process.c
+++ b/process.c
@@ -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: