diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | daemon.c | 18 |
2 files changed, 8 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac index ab6e497..553fba1 100644 --- a/configure.ac +++ b/configure.ac @@ -12,8 +12,8 @@ AC_PROG_LIBTOOL dnl Checks for libraries. -AC_FUNC_SETPGRP AC_TYPE_SIGNAL +AC_CHECK_FUNC(setsid,, AC_MSG_ERROR([setsid not found])) AC_CHECK_FUNCS(socket strdup strerror strspn) dnl Checks for header files. @@ -17,7 +17,7 @@ int daemon_start(int ignsigcld) /* Programming_ pp.72-85, by W. Richard Stephens, Prentice */ /* Hall PTR, 1990 */ - int childpid, fd; + int childpid; /* If started by init, don't bother */ if (getppid() == 1) @@ -35,16 +35,12 @@ int daemon_start(int ignsigcld) exit(0); } - /* Disassociate from controlling terminal and process group. */ - /* Ensure the process can't reacquire a new controlling terminal. */ - if (setpgrp() == -1) - return 0; - - if ((fd = open("/dev/tty", O_RDWR)) >= 0) { - /* loose controlling tty */ - ioctl(fd, TIOCNOTTY, NULL); - close(fd); - } + /* + * Disassociate from controlling terminal and process group and + * ensure the process can't reacquire a new controlling terminal. + * We're freshly forked, so setsid can't fail. + */ + (void) setsid(); out: /* Move the current directory to root, to make sure we aren't on a */ |