diff --git a/src/signal_handler.cc b/src/signal_handler.cc index f7fd7ccb..d1e3d1ac 100644 --- a/src/signal_handler.cc +++ b/src/signal_handler.cc @@ -74,7 +74,13 @@ SignalHandler::set_handler(unsigned int signum, Slot slot) { if (slot.empty()) throw std::logic_error("SignalHandler::set_handler(...) received an empty slot."); - signal(signum, &SignalHandler::caught); + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = &SignalHandler::caught; + + sigaction(signum, &sa, NULL); + m_handlers[signum] = slot; }