diff --git a/common/include/villas/tool.hpp b/common/include/villas/tool.hpp index aaeb26a4e..30c41e3d5 100644 --- a/common/include/villas/tool.hpp +++ b/common/include/villas/tool.hpp @@ -48,11 +48,13 @@ protected: virtual void handler(int, siginfo_t *, void *) { } + std::list handlerSignals; + static void printCopyright(); static void printVersion(); public: - Tool(int ac, char *av[], const std::string &name); + Tool(int ac, char *av[], const std::string &name, const std::list &sigs = { }); virtual int main() { diff --git a/common/lib/tool.cpp b/common/lib/tool.cpp index 3f80d09a7..a511132ec 100644 --- a/common/lib/tool.cpp +++ b/common/lib/tool.cpp @@ -46,10 +46,11 @@ void Tool::printVersion() std::cout << PROJECT_BUILD_ID << std::endl; } -Tool::Tool(int ac, char *av[], const std::string &nme) : +Tool::Tool(int ac, char *av[], const std::string &nme, const std::list &sigs) : argc(ac), argv(av), - name(nme) + name(nme), + handlerSignals(sigs) { current_tool = this; @@ -65,7 +66,7 @@ int Tool::run() CLR_BLD(CLR_YEL(PROJECT_BUILD_ID)), CLR_BLD(CLR_MAG(__DATE__)), CLR_BLD(CLR_MAG(__TIME__))); - ret = utils::signals_init(staticHandler); + ret = utils::signals_init(staticHandler, handlerSignals); if (ret) throw RuntimeError("Failed to initialize signal subsystem");