Add graceful exit when Ctrl-C is received

This commit is contained in:
Matt Stancliff 2014-03-26 22:15:44 -04:00 committed by antirez
parent c82e0b701f
commit d99a7246f8

View File

@ -3399,10 +3399,21 @@ void redisAsciiArt(void) {
zfree(buf);
}
static void sigtermHandler(int sig) {
REDIS_NOTUSED(sig);
static void sigShutdownHandler(int sig) {
char *msg;
redisLogFromHandler(REDIS_WARNING,"Received SIGTERM, scheduling shutdown...");
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);