From d99a7246f805f20a99bd2fa428c10a64433e6e81 Mon Sep 17 00:00:00 2001 From: Matt Stancliff Date: Wed, 26 Mar 2014 22:15:44 -0400 Subject: Add graceful exit when Ctrl-C is received --- src/redis.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/redis.c b/src/redis.c index 5ddbc9250..faed67331 100644 --- a/src/redis.c +++ b/src/redis.c @@ -3399,10 +3399,21 @@ void redisAsciiArt(void) { zfree(buf); } -static void sigtermHandler(int sig) { - REDIS_NOTUSED(sig); - - redisLogFromHandler(REDIS_WARNING,"Received SIGTERM, scheduling shutdown..."); +static void sigShutdownHandler(int sig) { + char *msg; + + switch (sig) { + case SIGINT: + msg = "Received SIGINT scheduling shutdown..."; + break; + case SIGTERM: + msg = "Received SIGTERM scheduling shutdown..."; + break; + default: + msg = "Received shutdown signal, scheduling shutdown..."; + }; + + redisLogFromHandler(REDIS_WARNING, msg); server.shutdown_asap = 1; } @@ -3413,8 +3424,9 @@ void setupSignalHandlers(void) { * Otherwise, sa_handler is used. */ sigemptyset(&act.sa_mask); act.sa_flags = 0; - act.sa_handler = sigtermHandler; + act.sa_handler = sigShutdownHandler; sigaction(SIGTERM, &act, NULL); + signal(SIGINT, sigShutdownHandler); #ifdef HAVE_BACKTRACE sigemptyset(&act.sa_mask); -- cgit v1.2.1