Mercurial > hg > toybox
diff toys/pending/syslogd.c @ 995:893c86bbe452
Add daemonize function to lib for klogd and syslogd
author | Felix Janda <felix.janda@posteo.de> |
---|---|
date | Sat, 10 Aug 2013 20:18:18 +0200 |
parents | c0627c163893 |
children | 8b1814e4c987 |
line wrap: on
line diff
--- a/toys/pending/syslogd.c Sat Aug 10 19:35:11 2013 +0200 +++ b/toys/pending/syslogd.c Sat Aug 10 20:18:18 2013 +0200 @@ -632,25 +632,6 @@ signal(SIGQUIT, signal_handler); } -static void syslog_daemon(void) -{ - int fd = open("/dev/null", O_RDWR); - if (fd < 0) fd = xcreate("/", O_RDONLY, 0666); - - pid_t pid = fork(); - if (pid < 0) perror_exit("DAEMON: failed to fork"); - if (pid) exit(EXIT_SUCCESS); - - setsid(); - dup2(fd, 0); - dup2(fd, 1); - dup2(fd, 2); - if (fd > 2) close(fd); - - //don't daemonize again if SIGHUP received. - toys.optflags |= FLAG_n; -} - void syslogd_main(void) { unsocks_t *tsd; @@ -688,7 +669,10 @@ setup_signal(); if (parse_config_file() == -1) goto clean_and_exit; open_logfiles(); - if (!flag_chk(FLAG_n)) syslog_daemon(); + if (!flag_chk(FLAG_n)) { + //don't daemonize again if SIGHUP received. + toys.optflags |= FLAG_n; + } { int pid_fd = open("/var/run/syslogd.pid", O_CREAT | O_WRONLY | O_TRUNC, 0666); if (pid_fd > 0) {