From d759331ef32bbf0908bce4d8753293ef08bbbfed Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 29 Dec 2008 06:13:48 +0000 Subject: improved signal handling --- src/signal.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) (limited to 'src/signal.c') diff --git a/src/signal.c b/src/signal.c index 1086969..122577d 100644 --- a/src/signal.c +++ b/src/signal.c @@ -42,10 +42,9 @@ volatile sig_atomic_t signal_exit = 0; void signal_init() { - signal(SIGINT, handle_signal_exit); - signal(SIGQUIT, handle_signal_exit); - signal(SIGTERM, handle_signal_exit); - + signal(SIGINT, handle_signal); + signal(SIGQUIT, handle_signal); + signal(SIGTERM, handle_signal); signal(SIGHUP, handle_signal); signal(SIGUSR1, handle_signal); signal(SIGUSR2, handle_signal); @@ -54,29 +53,12 @@ void signal_init() void handle_signal(int sig) { switch(sig) { + case SIGINT: log_printf(NOTICE, "SIG-Int caught, exitting"); signal_exit = 1; break; + case SIGQUIT: log_printf(NOTICE, "SIG-Quit caught, exitting"); signal_exit = 1; break; + case SIGTERM: log_printf(NOTICE, "SIG-Term caught, exitting"); signal_exit = 1; break; case SIGHUP: log_printf(NOTICE, "SIG-Hup caught"); break; case SIGUSR1: log_printf(NOTICE, "SIG-Usr1 caught"); break; case SIGUSR2: log_printf(NOTICE, "SIG-Usr2 caught"); break; default: log_printf(NOTICE, "Signal %d caught, ignoring", sig); break; } } - -void handle_signal_exit(int sig) -{ - switch(sig) { - case SIGINT: log_printf(NOTICE, "SIG-Int caught, exitting"); break; - case SIGQUIT: log_printf(NOTICE, "SIG-Quit caught, exitting"); break; - case SIGTERM: log_printf(NOTICE, "SIG-Term caught, exitting"); break; - default: log_printf(NOTICE, "Signal %d caught, ignoring", sig); return; - } - - if (signal_exit) - raise (sig); - signal_exit = 1; - - // do cleanup here - - signal (sig, SIG_DFL); - raise (sig); -} - -- cgit v1.2.3