diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-01-25T12·37+0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-01-26T19·40+0100 |
commit | 83ae6503e87c7f5237fb0f1602793c126436495a (patch) | |
tree | e439570378a11b6ec6d1ef381aed4b5e1613c5bb /src/libmain/shared.cc | |
parent | 951357e5fb4cd0804e729866f204b635add926a3 (diff) |
Fix interrupt handling
Diffstat (limited to 'src/libmain/shared.cc')
-rw-r--r-- | src/libmain/shared.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 12f083c7f794..d564e03853e0 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -97,6 +97,9 @@ static void opensslLockCallback(int mode, int type, const char * file, int line) } +static void sigHandler(int signo) { } + + void initNix() { /* Turn on buffering for cerr. */ @@ -130,6 +133,10 @@ void initNix() if (sigaction(SIGCHLD, &act, 0)) throw SysError("resetting SIGCHLD"); + /* Install a dummy SIGUSR1 handler for use with pthread_kill(). */ + act.sa_handler = sigHandler; + if (sigaction(SIGUSR1, &act, 0)) throw SysError("handling SIGUSR1"); + /* Register a SIGSEGV handler to detect stack overflows. */ detectStackOverflow(); @@ -253,6 +260,8 @@ void showManPage(const string & name) int handleExceptions(const string & programName, std::function<void()> fun) { + ReceiveInterrupts receiveInterrupts; // FIXME: need better place for this + string error = ANSI_RED "error:" ANSI_NORMAL " "; try { try { |