aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/daemon.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/daemon.c b/src/daemon.c
index 3cf81911e..51503bc7a 100644
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -131,18 +131,27 @@ daemonize_detach(void)
{
pid_t pid;
+ /* flush all file handles before duplicating the buffers */
+
fflush(NULL);
+ /* detach from parent process */
+
pid = fork();
if (pid < 0)
g_error("fork() failed: %s", g_strerror(errno));
if (pid > 0)
+ /* exit the parent process */
_exit(EXIT_SUCCESS);
+ /* release the current working directory */
+
if (chdir("/") < 0)
g_error("problems changing to root directory");
+ /* detach from the current session */
+
setsid();
g_debug("daemonized!");