#include "conf.h" #include #include #include #include #include #include void daemonize() { gchar *pidfile = conf_get_string("audist", "pidfile"); if(pidfile == NULL) { g_error("pidfile not set - can't daemonize"); } FILE *f = fopen(pidfile, "w"); if(f == NULL) { g_error("pidfile \"%s\" not writeable - can't daemonize", pidfile); } g_free(pidfile); switch(fork()) { case 0: break; case -1: g_error("fork() failed"); default: _exit(0); } 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() { gchar *pidfile = conf_get_string("audist", "pidfile"); if(pidfile == NULL) { g_warning("pidfile not set"); return; } g_unlink(pidfile); g_free(pidfile); }