From 9b59f4eaa22e8be754ddc7be408282360ebee581 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 31 Mar 2017 20:04:11 +0100 Subject: [PATCH] Handle SIGINT --- signals.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/signals.c b/signals.c index 5179018f..764594c3 100644 --- a/signals.c +++ b/signals.c @@ -17,6 +17,13 @@ static void SIGTERM_handler(int signum) killed = 1; } +static void SIGINT_handler(int signum) +{ + // Should probably not use printf in signal handler, but this will anyhow exit immediately + printf("\nFATAL: FTL received SIGINT (Ctrl + C), exiting immediately!\n"); + exit(EXIT_FAILURE); +} + static void SIGSEGV_handler(int sig, siginfo_t *si, void *unused) { logg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); @@ -70,6 +77,13 @@ void handle_signals(void) TERMaction.sa_handler = &SIGTERM_handler; sigaction(SIGTERM, &TERMaction, NULL); + // Catch SIGINT + struct sigaction INTaction; + memset(&INTaction, 0, sizeof(struct sigaction)); + sigemptyset(&INTaction.sa_mask); + INTaction.sa_handler = &SIGINT_handler; + sigaction(SIGINT, &INTaction, NULL); + // Ignore SIGPIPE signal(SIGPIPE, SIG_IGN);