* 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:
nobu 2009-04-25 09:21:49 +00:00
Родитель 0dae2c910f
Коммит 9bb7a8ccdd
3 изменённых файлов: 26 добавлений и 2 удалений

Просмотреть файл

@ -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)

Просмотреть файл

@ -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("/");