From 4251f289e803d5d35f8d160545eb281387723ca5 Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Tue, 20 Oct 2020 01:26:37 +0200 Subject: Finished up logging options --- daemonize.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/daemonize.c b/daemonize.c index c9c925f..5cee18d 100644 --- a/daemonize.c +++ b/daemonize.c @@ -5,6 +5,7 @@ #include #include #include +#include const struct option longopts[] = { {"chdir", no_argument, NULL, 'd'}, @@ -102,14 +103,26 @@ int main (int argc, char** argv) { // Set up logs as appropriate int logs = options.stdlog || options.errlog; if (options.stdlog) { - dup2(fileno(options.stdlog), fileno(stdout)); + dup2(fileno(options.stdlog), STDOUT_FILENO); fclose(options.stdlog); } if (options.errlog) { - dup2(fileno(options.errlog), fileno(stderr)); + dup2(fileno(options.errlog), STDERR_FILENO); fclose(options.errlog); } - // TODO: close stdin, stderr, stdout and redirect to /dev/null if logging + + if (logs && !options.noclose) { + int devnull_out = open("/dev/null", O_WRONLY); + int devnull_in = open("/dev/null", O_RDONLY); + if (!options.errlog) + dup2(devnull_out, STDERR_FILENO); + if (!options.stdlog) + dup2(devnull_out, STDOUT_FILENO); + dup2(devnull_in, STDIN_FILENO); + close(devnull_in); + close(devnull_out); + } + daemon(options.nochdir, options.noclose | logs); system(buffer); } -- cgit v1.2.3