#include // alarm #include // now #include // signal raise #include // strsignal #include // cout endl void f(int s) { auto now = std::chrono::system_clock::now(); auto time = std::chrono::system_clock::to_time_t(now); std::cout << strsignal(s) << " --> " << std::ctime(&time) << std::flush; } template class signal_handler { public: signal_handler() { signal(_s, _f); } ~signal_handler() { signal(_s, SIG_DFL); } }; int main(int argc, char* argv[]) { const int DIE = 5; signal_handler sigint; signal_handler sigusr1; alarm(DIE); // signal after DIE seconds std::cout << "I will die in " << DIE << " seconds :(" << std::endl; for(;;) { sleep(1); raise(SIGUSR1); } }