From f7d8db93610a13cb44d5a51c391049e84f670e0e Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sat, 4 Sep 2010 13:16:45 +0200 Subject: Added kill switch. --- daemon.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'daemon.c') diff --git a/daemon.c b/daemon.c index 0de94fa..3cccedd 100644 --- a/daemon.c +++ b/daemon.c @@ -5,21 +5,23 @@ #include #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; + g_error("pidfile not set - can't daemonize"); } FILE *f = fopen(pidfile, "w"); if(f == NULL) { - g_warning("pidfile \"%s\" not writeable - can't daemonize", pidfile); - return; + g_error("pidfile \"%s\" not writeable - can't daemonize", pidfile); } + g_free(pidfile); + switch(fork()) { case 0: break; @@ -31,8 +33,26 @@ void daemonize() { fprintf(f, "%d\n", getpid()); fclose(f); +} + +void daemon_kill() { + gchar *pidfile = conf_get_string("audist", "pidfile"); + if(pidfile == NULL) { + g_error("pidfile not set"); + } + + FILE *f = fopen(pidfile, "r"); g_free(pidfile); + if(f == NULL) { + g_error("can't read pidfile"); + } + + int pid; + fscanf(f, "%d", &pid); + fclose(f); + + kill(pid, SIGTERM); } void daemonize_finished() { -- cgit v1.2.3