From 6859b0b9b381d279aec5f7fa6764985302762e14 Mon Sep 17 00:00:00 2001 From: Thomas Ries Date: Wed, 28 Nov 2007 20:51:45 +0000 Subject: [PATCH] Fix: Detach from controlling TTY if daemonized --- ChangeLog | 1 + src/siproxd.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/ChangeLog b/ChangeLog index acd1d4f..9cea0d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 0.6.1 ===== + 28-Nov-2007: - Fix: Detach from controlling TTY if daemonized 22-Nov-2007: - Working on code that that will allow siproxd to use separate interfaces in its "in front of NAT routes" setup. ( UA1[LAN0]--siproxd--LAN1--NAT--Internet--UA2 ) diff --git a/src/siproxd.c b/src/siproxd.c index 896be55..2d284fe 100644 --- a/src/siproxd.c +++ b/src/siproxd.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -215,6 +216,23 @@ int main (int argc, char *argv[]) if (fork()!=0) exit(0); log_set_stderr(0); + + /* detach STDIN/OUT/ERR file */ + i=open("/dev/null", O_RDWR); + close(STDIN_FILENO); + close(STDOUT_FILENO); + close(STDERR_FILENO); + if (dup2(i, STDIN_FILENO) <0) { + WARN("detaching STDIN failed: %s",strerror(errno)); + } + if (dup2(i, STDOUT_FILENO) <0) { + WARN("detaching STDOUT failed: %s",strerror(errno)); + } + if (dup2(i, STDERR_FILENO) <0) { + WARN("detaching STDERR failed: %s",strerror(errno)); + } + close(i); + INFO("daemonized, pid=%i", getpid()); }