From 88dc4e3e572b015e9240d22de2a07f3ca6c39e00 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 30 Dec 2012 22:13:33 +0100 Subject: [PATCH] add forking --- main.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/main.c b/main.c index 66d12b1..41b8eba 100644 --- a/main.c +++ b/main.c @@ -136,6 +136,7 @@ int main(int argc, char **argv) bool nofork = false; char *port; int opt, ch; + int cur_fd; init_defaults(); signal(SIGPIPE, SIG_IGN); @@ -251,5 +252,31 @@ int main(int argc, char **argv) uh_config_parse(); + /* fork (if not disabled) */ + if (!nofork) { + switch (fork()) { + case -1: + perror("fork()"); + exit(1); + + case 0: + /* daemon setup */ + if (chdir("/")) + perror("chdir()"); + + cur_fd = open("/dev/null", O_WRONLY); + if (cur_fd > 0) { + dup2(cur_fd, 0); + dup2(cur_fd, 1); + dup2(cur_fd, 2); + } + + break; + + default: + exit(0); + } + } + return run_server(); } -- 2.25.1