diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-07-02 16:00:15 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-07-02 16:00:15 +0200 |
commit | 8d75833aacaa6c5aebd4014c79ace5633d6dabf3 (patch) | |
tree | 1471bb4feee6c335496d10c48ab12bba8d657c63 /src/miavd.cc | |
parent | b69bba9b089afc69df837ae69d55debf5a14ca1a (diff) |
Shut down server process nicely on SIGINT. Reopen logfile on SIGHUP
Diffstat (limited to 'src/miavd.cc')
-rw-r--r-- | src/miavd.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/miavd.cc b/src/miavd.cc index e9d7bc4..4ff3425 100644 --- a/src/miavd.cc +++ b/src/miavd.cc @@ -32,6 +32,9 @@ #include <config.h> +// For signal +#include <signal.h> + #include "miav_daemon.h" #include "miav_config.h" @@ -62,6 +65,23 @@ static const char usage_str[] = " -P, --pidfile file Write pid of the running daemon to file.\n" ; +bool server_is_running = true; +void ctrl_c(int) +{ + DEBUG(server, "Ctrl+c detected"); + server_is_running = false; +} + +void reload(int) +{ + printf("Reopening logfile...\n"); + if(hugin_reopen_log() != HUG_STATUS_OK) { + fprintf(stderr, "Could not reopen logfile!\n"); + return; + } + DEBUG(server, "Reopened log\n"); +} + int main(int argc, char *argv[]) { const char *hugin_filter = "+all"; @@ -168,5 +188,8 @@ int main(int argc, char *argv[]) if(user) cuser = user; if(group) cgroup = group; + signal(SIGHUP, reload); + signal(SIGINT, ctrl_c); + return daemon.run(cuser, cgroup, !foreground, pidfile); } |