diff --git a/daemon/daemonize.c b/daemon/daemonize.c index 7d796a8..cc475f3 100644 --- a/daemon/daemonize.c +++ b/daemon/daemonize.c @@ -31,6 +31,7 @@ POSSIBILITY OF SUCH DAMAGE. #include "daemonize.h" #include "logging.h" +#include #include #include #include @@ -68,7 +69,13 @@ void daemonize(const char *name) if (chdir("/") < 0) { FATAL_ERRORNO("Failed to change to root directory\n"); } - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); + + /* replace standard file descriptors by /dev/null */ + int devnull_r = open("/dev/null", O_RDONLY); + int devnull_w = open("/dev/null", O_WRONLY); + dup2(devnull_r, STDIN_FILENO); + dup2(devnull_w, STDOUT_FILENO); + dup2(devnull_w, STDERR_FILENO); + close(devnull_r); + close(devnull_w); }