add SignalHandler::ResetSignalHandlers
This commit is contained in:
@@ -18,7 +18,8 @@ extern "C" int sigaltstack( const struct sigaltstack *ss, struct sigaltstack *os
|
|||||||
static vector<SignalHandler::handler> handlers;
|
static vector<SignalHandler::handler> handlers;
|
||||||
SaveSignals *saved_sigs;
|
SaveSignals *saved_sigs;
|
||||||
|
|
||||||
static int signals[] = {
|
static int signals[] =
|
||||||
|
{
|
||||||
SIGALRM, SIGBUS, SIGFPE, SIGHUP, SIGILL, SIGINT, SIGABRT,
|
SIGALRM, SIGBUS, SIGFPE, SIGHUP, SIGILL, SIGINT, SIGABRT,
|
||||||
SIGQUIT, SIGSEGV, SIGTRAP, SIGTERM, SIGVTALRM, SIGXCPU, SIGXFSZ,
|
SIGQUIT, SIGSEGV, SIGTRAP, SIGTERM, SIGVTALRM, SIGXCPU, SIGXFSZ,
|
||||||
#if defined(HAVE_DECL_SIGPWR) && HAVE_DECL_SIGPWR
|
#if defined(HAVE_DECL_SIGPWR) && HAVE_DECL_SIGPWR
|
||||||
@@ -166,6 +167,18 @@ void SignalHandler::OnClose(handler h)
|
|||||||
handlers.push_back(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
|
/* Written by Glenn Maynard. Public domain, copyrighting a simple signal handler
|
||||||
* is dumb. */
|
* is dumb. */
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace SignalHandler
|
|||||||
typedef void (*handler)( int, siginfo_t *si, const ucontext_t *uc );
|
typedef void (*handler)( int, siginfo_t *si, const ucontext_t *uc );
|
||||||
|
|
||||||
void OnClose(handler);
|
void OnClose(handler);
|
||||||
|
void ResetSignalHandlers();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user