From 0a88f59a5d3bd89fd477c5a3e5dd333425af676a Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 25 Apr 2009 09:21:49 +0000 Subject: * configure.in (ac_cv_func_daemon): use daemon(3) only on *BSD. * process.c (proc_daemon): double fork to ensure not having ctty. [ruby-core:23311] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- process.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'process.c') diff --git a/process.c b/process.c index 5669cf664..4aeb615e7 100644 --- a/process.c +++ b/process.c @@ -4545,7 +4545,7 @@ proc_daemon(int argc, VALUE *argv) #elif defined(HAVE_FORK) switch (rb_fork(0, 0, 0, Qnil)) { case -1: - return (-1); + return INT2FIX(-1); case 0: break; default: @@ -4554,6 +4554,16 @@ proc_daemon(int argc, VALUE *argv) proc_setsid(); + /* must not be process-leader */ + switch (rb_fork(0, 0, 0, Qnil)) { + case -1: + return INT2FIX(-1); + case 0: + break; + default: + _exit(0); + } + if (!RTEST(nochdir)) (void)chdir("/"); -- cgit