diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-04-25 09:21:49 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-04-25 09:21:49 +0000 |
commit | 9bb7a8ccddf15537da6af71e594322f2519350f7 (patch) | |
tree | b3baff1e29bd6f902d015ba08e50e60fc6c2cccd /process.c | |
parent | 0dae2c910fa646a2b41d33f0b4d1dad818eb00da (diff) | |
download | ruby-9bb7a8ccddf15537da6af71e594322f2519350f7.tar.gz |
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@23277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -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("/"); |