diff options
Diffstat (limited to 'src/ulogd.c')
-rw-r--r-- | src/ulogd.c | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/src/ulogd.c b/src/ulogd.c index c1aba77..2c0fbd1 100644 --- a/src/ulogd.c +++ b/src/ulogd.c @@ -1399,6 +1399,19 @@ int main(int argc, char* argv[]) " with daemon mode).\n"); } + if (daemonize){ + if (daemon(0, 0) < 0) { + ulogd_log(ULOGD_FATAL, "can't daemonize: %s (%d)", + errno, strerror(errno)); + warn_and_exit(daemonize); + } + } + + if (ulogd_pidfile) { + if (write_pidfile(daemonize) < 0) + warn_and_exit(0); + } + if (config_register_file(ulogd_configfile)) { ulogd_log(ULOGD_FATAL, "error registering configfile \"%s\"\n", ulogd_configfile); @@ -1450,23 +1463,6 @@ int main(int argc, char* argv[]) } } - - if (daemonize){ - if (fork()) { - exit(0); - } - if (logfile != stdout) - fclose(stdout); - fclose(stderr); - fclose(stdin); - setsid(); - } - - if (ulogd_pidfile) { - if (write_pidfile(daemonize) < 0) - warn_and_exit(0); - } - signal(SIGTERM, &sigterm_handler); signal(SIGINT, &sigterm_handler); signal(SIGHUP, &signal_handler); |