From 801f115f28ebaabda2311d26fe88afe4d055512f Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Mon, 16 Jan 2012 17:05:08 +0100 Subject: [PATCH] simply copy signal handling code from gameserver project --- include/signalHandling.h | 10 ++++++++++ src/signalHandling.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 include/signalHandling.h create mode 100644 src/signalHandling.c diff --git a/include/signalHandling.h b/include/signalHandling.h new file mode 100644 index 0000000..0bd25b0 --- /dev/null +++ b/include/signalHandling.h @@ -0,0 +1,10 @@ +#ifndef __SIGNAL_HANDLING_H__ +#define __SIGNAL_HANDLING_H__ + +extern volatile int doShutdown; + +void terminate(int signum); +void init_signals(void); + +#endif // __SIGNAL_HANDLING_H__ + diff --git a/src/signalHandling.c b/src/signalHandling.c new file mode 100644 index 0000000..485f26c --- /dev/null +++ b/src/signalHandling.c @@ -0,0 +1,28 @@ +#include /* for signal() and signal names */ + +#include "include/monitor.h" + +volatile int doShutdown; + +void terminate(int signum) +{ + signal(signum, SIG_IGN); + syslogMonitor(LOG_INFO, MON_CRITICAL, "signals", + "caugth deadly signal %d", signum); + syslogMonitor(LOG_INFO, MON_FAILURE, "signals", + "caugth deadly signal %d - service terminated", signum); + doShutdown = 1; +} + +void init_signals(void) +{ + signal(SIGTERM, terminate); + signal(SIGHUP, SIG_IGN); + signal(SIGINT, terminate); + signal(SIGQUIT, terminate); + signal(SIGABRT, terminate); + signal(SIGALRM, SIG_IGN); + signal(SIGURG, SIG_IGN); + + signal(SIGPIPE, SIG_IGN); +}