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

Function SetSignalHandler

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

Source from the content-addressed store, hash-verified

2058}
2059
2060Result<SignalHandler> SetSignalHandler(int signum, const SignalHandler& handler) {
2061#if ARROW_HAVE_SIGACTION
2062 struct sigaction old_sa;
2063 int ret = sigaction(signum, &handler.action(), &old_sa);
2064 if (ret != 0) {
2065 // TODO more detailed message using errno
2066 return Status::IOError("sigaction call failed");
2067 }
2068 return SignalHandler(old_sa);
2069#else
2070 SignalHandler::Callback cb = signal(signum, handler.callback());
2071 if (cb == SIG_ERR) {
2072 // TODO more detailed message using errno
2073 return Status::IOError("signal call failed");
2074 }
2075 return SignalHandler(cb);
2076#endif
2077 return Status::OK();
2078}
2079
2080void ReinstateSignalHandler(int signum, SignalHandler::Callback handler) {
2081#if !ARROW_HAVE_SIGACTION

Callers 4

ServeMethod · 0.85
ImplMethod · 0.85
~ImplMethod · 0.85
UnregisterHandlersMethod · 0.85

Calls 5

IOErrorFunction · 0.85
SignalHandlerClass · 0.85
sigactionClass · 0.70
OKFunction · 0.50
callbackMethod · 0.45

Tested by 2

ImplMethod · 0.68
~ImplMethod · 0.68