signal_data_struct():
signaled_flag( false ),
io_service(),
+ old_handler_int( 0 ),
+ old_handler_term( 0 ),
+ old_handler_usr1( 0 ),
+ old_handler_usr2( 0 ),
stopped( false ),
check_timer(),
config_log_level( I2n::Logger::LogLevel::Notice )
/// reset handlers to the ones saved in install_signal_handler
void reset_signal_handlers()
{
- void (*old_handler_int)(int);
- void (*old_handler_term)(int);
- void (*old_handler_usr1)(int);
- void (*old_handler_usr2)(int);
- old_handler_int = signal(SIGINT , signal_data.old_handler_int);
- old_handler_term = signal(SIGTERM, signal_data.old_handler_term);
- old_handler_usr1 = signal(SIGUSR1, signal_data.old_handler_usr1);
- old_handler_usr2 = signal(SIGUSR2, signal_data.old_handler_usr2);
+ void (*old_handler_int)(int) = 0;
+ void (*old_handler_term)(int) = 0;
+ void (*old_handler_usr1)(int) = 0;
+ void (*old_handler_usr2)(int) = 0;
+ if (signal_data.old_handler_int != 0 )
+ old_handler_int = signal(SIGINT , signal_data.old_handler_int);
+ if (signal_data.old_handler_term != 0 )
+ old_handler_term = signal(SIGTERM, signal_data.old_handler_term);
+ if (signal_data.old_handler_usr1 != 0 )
+ old_handler_usr1 = signal(SIGUSR1, signal_data.old_handler_usr1);
+ if (signal_data.old_handler_usr2 != 0 )
+ old_handler_usr2 = signal(SIGUSR2, signal_data.old_handler_usr2);
if ( old_handler_int == SIG_ERR ||
old_handler_term == SIG_ERR ||