diff options
Diffstat (limited to 'src/signal.c')
| -rw-r--r-- | src/signal.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/signal.c b/src/signal.c new file mode 100644 index 0000000..e993ae3 --- /dev/null +++ b/src/signal.c @@ -0,0 +1,34 @@ +#include "signal.h" + +#include <string.h> + +sig_atomic_t signal_running; + +static void +handle_signal_shutdown(int sig) +{ + signal_running = 0; +} + +int +signal_setup_actions() +{ + int rc; + struct sigaction action; + + signal_running = 1; + + memset(&action, 0, sizeof(action)); + action.sa_handler = handle_signal_shutdown; + rc = sigemptyset(&action.sa_mask); + if(rc < 0) return rc; + rc = sigaction(SIGINT, &action, 0); + if(rc < 0) return rc; + + rc = sigemptyset(&action.sa_mask); + if(rc < 0) return rc; + rc = sigaction(SIGTERM, &action, 0); + if(rc < 0) return rc; + + return rc; +} |
