From 671966ae7bb69fc04952a8accaa52fae5e77d8bb Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sat, 4 Sep 2010 01:20:33 +0200 Subject: Added command-line options and daemonizer. --- daemon.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 daemon.c (limited to 'daemon.c') diff --git a/daemon.c b/daemon.c new file mode 100644 index 0000000..0de94fa --- /dev/null +++ b/daemon.c @@ -0,0 +1,48 @@ +#include "conf.h" + +#include + +#include +#include +#include + +void daemonize() { + gchar *pidfile = conf_get_string("audist", "pidfile"); + + if(pidfile == NULL) { + g_warning("pidfile not set - can't daemonize"); + return; + } + + FILE *f = fopen(pidfile, "w"); + if(f == NULL) { + g_warning("pidfile \"%s\" not writeable - can't daemonize", pidfile); + return; + } + + switch(fork()) { + case 0: + break; + case -1: + g_error("fork() failed"); + default: + _exit(0); + } + + fprintf(f, "%d\n", getpid()); + fclose(f); + + g_free(pidfile); +} + +void daemonize_finished() { + gchar *pidfile = conf_get_string("audist", "pidfile"); + + if(pidfile == NULL) { + g_warning("pidfile not set"); + return; + } + + g_unlink(pidfile); + g_free(pidfile); +} -- cgit v1.2.3