MCPcopy Create free account
hub / github.com/apache/arrow / GetSignalHandler

Function GetSignalHandler

cpp/src/arrow/util/io_util.cc:2040–2058  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2038#endif
2039
2040Result<SignalHandler> GetSignalHandler(int signum) {
2041#if ARROW_HAVE_SIGACTION
2042 struct sigaction sa;
2043 int ret = sigaction(signum, nullptr, &sa);
2044 if (ret != 0) {
2045 // TODO more detailed message using errno
2046 return Status::IOError("sigaction call failed");
2047 }
2048 return SignalHandler(sa);
2049#else
2050 // To read the old handler, set the signal handler to something else temporarily
2051 SignalHandler::Callback cb = signal(signum, SIG_IGN);
2052 if (cb == SIG_ERR || signal(signum, cb) == SIG_ERR) {
2053 // TODO more detailed message using errno
2054 return Status::IOError("signal call failed");
2055 }
2056 return SignalHandler(cb);
2057#endif
2058}
2059
2060Result<SignalHandler> SetSignalHandler(int signum, const SignalHandler& handler) {
2061#if ARROW_HAVE_SIGACTION

Callers

nothing calls this directly

Calls 3

IOErrorFunction · 0.85
SignalHandlerClass · 0.85
sigactionClass · 0.70

Tested by

no test coverage detected