@ -45,6 +45,7 @@
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
@ -233,6 +234,15 @@ int create_pid_file(const char *pid_file_name)
void set_sig_handler(int sig, signal_handler_t handler)
{
if(signal(sig, handler) == SIG_ERR)
daemon_error_exit("Can't set handler for signal: %d %m\n", sig);
}
static void do_fork()
switch( fork() ) // Become background process
@ -95,9 +95,12 @@ void daemon_error_exit(const char *format, ...);
void exit_if_not_daemonized(int exit_status);
typedef void (*signal_handler_t) (int);
void set_sig_handler(int sig, signal_handler_t handler);
void daemonize2(void (*optional_init)(void *), void *data);
static inline void daemonize() { daemonize2(NULL, NULL); }