33 using HandlerFunc = std::function<void(
int)>;
35 static void registerHandler(
int signum, HandlerFunc handler) {
36 auto& vec = getHandlers()[signum];
37 vec.push_back(handler);
38 std::signal(signum, SignalHandler::dispatch);
42 static std::map<int, std::vector<HandlerFunc>>& getHandlers() {
43 static std::map<int, std::vector<HandlerFunc>> handlers;
46 static void dispatch(
int signum) {
47 auto& handlers = getHandlers();
48 auto it = handlers.find(signum);
49 if (it != handlers.end()) {
50 for (
auto& func : it->second) {