forked from lix-project/lix
Add more signals
This commit is contained in:
parent
102434e4cb
commit
a47b5476e1
|
@ -181,8 +181,9 @@ void initNix()
|
||||||
/* Reset SIGCHLD to its default. */
|
/* Reset SIGCHLD to its default. */
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
sigemptyset(&act.sa_mask);
|
sigemptyset(&act.sa_mask);
|
||||||
act.sa_handler = SIG_DFL;
|
|
||||||
act.sa_flags = 0;
|
act.sa_flags = 0;
|
||||||
|
|
||||||
|
act.sa_handler = SIG_DFL;
|
||||||
if (sigaction(SIGCHLD, &act, 0))
|
if (sigaction(SIGCHLD, &act, 0))
|
||||||
throw SysError("resetting SIGCHLD");
|
throw SysError("resetting SIGCHLD");
|
||||||
|
|
||||||
|
@ -197,13 +198,23 @@ void initNix()
|
||||||
act.sa_handler = sigHandler;
|
act.sa_handler = sigHandler;
|
||||||
if (sigaction(SIGWINCH, &act, 0)) throw SysError("handling SIGWINCH");
|
if (sigaction(SIGWINCH, &act, 0)) throw SysError("handling SIGWINCH");
|
||||||
|
|
||||||
// Disable SA_RESTART for interrupts, so that system calls on this thread
|
/* Disable SA_RESTART for interrupts, so that system calls on this thread
|
||||||
// error with EINTR like they do on Linux, and we don’t hang forever.
|
* error with EINTR like they do on Linux.
|
||||||
|
* Most signals on BSD systems default to SA_RESTART on, but Nix
|
||||||
|
* expects EINTR from syscalls to properly exit. */
|
||||||
act.sa_handler = SIG_DFL;
|
act.sa_handler = SIG_DFL;
|
||||||
if (sigaction(SIGINT, &act, 0)) throw SysError("handling SIGINT");
|
if (sigaction(SIGINT, &act, 0)) throw SysError("handling SIGINT");
|
||||||
if (sigaction(SIGTERM, &act, 0)) throw SysError("handling SIGTERM");
|
if (sigaction(SIGTERM, &act, 0)) throw SysError("handling SIGTERM");
|
||||||
if (sigaction(SIGHUP, &act, 0)) throw SysError("handling SIGHUP");
|
if (sigaction(SIGHUP, &act, 0)) throw SysError("handling SIGHUP");
|
||||||
if (sigaction(SIGPIPE, &act, 0)) throw SysError("handling SIGPIPE");
|
if (sigaction(SIGPIPE, &act, 0)) throw SysError("handling SIGPIPE");
|
||||||
|
if (sigaction(SIGQUIT, &act, 0)) throw SysError("handling SIGQUIT");
|
||||||
|
if (sigaction(SIGILL, &act, 0)) throw SysError("handling SIGILL");
|
||||||
|
if (sigaction(SIGTRAP, &act, 0)) throw SysError("handling SIGTRAP");
|
||||||
|
if (sigaction(SIGABRT, &act, 0)) throw SysError("handling SIGABRT");
|
||||||
|
if (sigaction(SIGFPE, &act, 0)) throw SysError("handling SIGFPE");
|
||||||
|
if (sigaction(SIGBUS, &act, 0)) throw SysError("handling SIGBUS");
|
||||||
|
if (sigaction(SIGXCPU, &act, 0)) throw SysError("handling SIGXCPU");
|
||||||
|
if (sigaction(SIGXFSZ, &act, 0)) throw SysError("handling SIGXFSZ");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Register a SIGSEGV handler to detect stack overflows. */
|
/* Register a SIGSEGV handler to detect stack overflows. */
|
||||||
|
|
Loading…
Reference in a new issue