29 #ifndef TOMOGRAPHER_TOOLS_SIGNAL_HANDLER 30 #define TOMOGRAPHER_TOOLS_SIGNAL_HANDLER 66 virtual void handleSignal(
int sig_num) = 0;
71 #ifndef TOMOGRAPHER_SIG_HANDLER_REPEAT_EXIT_DELAY 72 #define TOMOGRAPHER_SIG_HANDLER_REPEAT_EXIT_DELAY 2 75 namespace tomo_internal {
79 static void signal_dispatch_fn(
int signum)
81 assert(signum >= 0 && signum < NSIG &&
"signum out of range 0...NSIG !") ;
83 #if defined(__MINGW32__) || defined(__MINGW64__) 85 signal(signum, tomo_internal::signal_dispatch_fn);
93 if ( (now - tomo_internal::last_sig_hit_time[signum]) < TOMOGRAPHER_SIG_HANDLER_REPEAT_EXIT_DELAY ) {
100 tomo_internal::last_sig_hit_time[signum] = now;
102 if (signal_handler[signum] != NULL) {
105 std::fprintf(stderr,
"Warning: sig_handle: no signal handler set (got signal %d)\n", signum);
119 tomo_internal::signal_handler[signum] = sobj;
120 signal(signum, tomo_internal::signal_dispatch_fn);
Base namespace for the Tomographer project.