add SignalHandler::ResetSignalHandlers

This commit is contained in:
Glenn Maynard
2004-05-06 08:40:53 +00:00
parent e5de37f23c
commit 24af9a4825
2 changed files with 15 additions and 1 deletions
+14 -1
View File
@@ -18,7 +18,8 @@ extern "C" int sigaltstack( const struct sigaltstack *ss, struct sigaltstack *os
static vector<SignalHandler::handler> handlers;
SaveSignals *saved_sigs;
static int signals[] = {
static int signals[] =
{
SIGALRM, SIGBUS, SIGFPE, SIGHUP, SIGILL, SIGINT, SIGABRT,
SIGQUIT, SIGSEGV, SIGTRAP, SIGTERM, SIGVTALRM, SIGXCPU, SIGXFSZ,
#if defined(HAVE_DECL_SIGPWR) && HAVE_DECL_SIGPWR
@@ -166,6 +167,18 @@ void SignalHandler::OnClose(handler h)
handlers.push_back(h);
}
/* Revert to the default signal handler. This is called */
void SignalHandler::ResetSignalHandlers()
{
struct sigaction sa;
sa.sa_flags = 0;
sigemptyset(&sa.sa_mask);
/* Set up the default signal handler. */
sa.sa_handler = SIG_DFL;
for(int i = 0; signals[i] != -1; ++i)
sigaction( signals[i], &sa, NULL );
}
/* Written by Glenn Maynard. Public domain, copyrighting a simple signal handler
* is dumb. */