mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
0dae2c910f
commit
9bb7a8ccdd
3 changed files with 26 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
Sat Apr 25 18:21:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* 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]
|
||||
|
||||
Sat Apr 25 16:19:48 2009 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* time.c (month_arg): extracted from time_arg.
|
||||
|
|
|
@ -727,6 +727,14 @@ AC_ARG_ENABLE(pthread,
|
|||
[enable_pthread=$enableval], [enable_pthread=$enable_pthread_default])
|
||||
|
||||
dnl Checks for libraries.
|
||||
case "$target_os" in
|
||||
when(*bsd*|dragonfly*)
|
||||
;;
|
||||
when(*)
|
||||
ac_cv_func_daemon=no
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$target_os" in
|
||||
when(nextstep*) ;;
|
||||
when(openstep*) ;;
|
||||
|
@ -744,7 +752,6 @@ when(darwin*) RUBY_PREPEND_OPTION(LIBS, -lobjc)
|
|||
AC_MSG_RESULT($macosx_10_5)
|
||||
if test $macosx_10_5 = yes; then
|
||||
ac_cv_header_ucontext_h=no
|
||||
ac_cv_func_daemon=no
|
||||
else
|
||||
AC_DEFINE(BROKEN_SETREUID, 1)
|
||||
AC_DEFINE(BROKEN_SETREGID, 1)
|
||||
|
|
12
process.c
12
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("/");
|
||||
|
||||
|
|
Loading…
Reference in a new issue