added SA_RESTART to automatically restart system calls interrupted by signals (as was already done by signal()) as well as error checking on sigaction()

This commit is contained in:
Jorge Israel Peña
2013-04-07 21:21:27 -07:00
parent 2cd70f4342
commit 49d00285c8
+5 -4
View File
@@ -76,12 +76,13 @@ SignalHandler::set_handler(unsigned int signum, Slot slot) {
struct sigaction sa;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sa.sa_flags = SA_RESTART;
sa.sa_handler = &SignalHandler::caught;
sigaction(signum, &sa, NULL);
m_handlers[signum] = slot;
if (sigaction(signum, &sa, NULL) == -1)
throw std::logic_error("Could not set sigaction: " + std::string(rak::error_number::current().c_str()));
else
m_handlers[signum] = slot;
}
void