MCPcopy Create free account
hub / github.com/ByConity/ByConity / addSignalHandler

Function addSignalHandler

base/daemon/BaseDaemon.cpp:940–966  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

938
939
940static void addSignalHandler(const std::vector<int> & signals, signal_function handler, std::vector<int> * out_handled_signals)
941{
942 struct sigaction sa;
943 memset(&sa, 0, sizeof(sa));
944 sa.sa_sigaction = handler;
945 sa.sa_flags = SA_SIGINFO;
946
947#if defined(OS_DARWIN)
948 sigemptyset(&sa.sa_mask);
949 for (auto signal : signals)
950 sigaddset(&sa.sa_mask, signal);
951#else
952 if (sigemptyset(&sa.sa_mask))
953 throw Poco::Exception("Cannot set signal handler.");
954
955 for (auto signal : signals)
956 if (sigaddset(&sa.sa_mask, signal))
957 throw Poco::Exception("Cannot set signal handler.");
958#endif
959
960 for (auto signal : signals)
961 if (sigaction(signal, &sa, nullptr))
962 throw Poco::Exception("Cannot set signal handler.");
963
964 if (out_handled_signals)
965 std::copy(signals.begin(), signals.end(), std::back_inserter(*out_handled_signals));
966};
967
968
969static void blockSignals(const std::vector<int> & signals)

Callers 2

setupWatchdogMethod · 0.85

Calls 4

sigactionClass · 0.70
ExceptionClass · 0.50
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected