diff --git a/ksysguard/ksysguardd/ksysguardd.c b/ksysguard/ksysguardd/ksysguardd.c index 373abb0d..7f62d124 100644 --- a/ksysguard/ksysguardd/ksysguardd.c +++ b/ksysguard/ksysguardd/ksysguardd.c @@ -193,6 +193,13 @@ static void dropPrivileges( void ) } } +void signalHandler( int sig ) +{ + log_error( "Signal caught: %d", sig ); + signal(sig, SIG_DFL); + QuitApp = 1; +} + void makeDaemon( void ) { int fd = -1; @@ -543,6 +550,10 @@ int main( int argc, char* argv[] ) initModules(); + signal(SIGTERM, signalHandler); + signal(SIGHUP, signalHandler); + signal(SIGINT, signalHandler); + if ( RunAsDaemon ) { makeDaemon();