From bd2655711d9de446c8b8125d5d696e56aebc5053 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Wed, 20 May 2015 00:45:27 +0200 Subject: Modernize daemon_start(3). daemon_start(3) was implemented using ancient APIs. Modernize and simplify using setsid(). Signed-off-by: Ralf Baechle --- daemon.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'daemon.c') diff --git a/daemon.c b/daemon.c index 01511b6..3658c94 100644 --- a/daemon.c +++ b/daemon.c @@ -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 */ -- cgit v1.2.3