signals

August 2019

#include <iostream>
#include <csignal>
#include <unistd.h>

// declare signal handler
void terminate(int sig);
// define signal handler
void terminate(int sig) {
   std::cout << "\nsignal: " << sig << std::endl;
   exit(sig);
}

int main() {
   // register signal
   signal(SIGINT, terminate);  

   // keyboard interrupt
   while(1) {
       std::cout << "stuck doing something really hard..." << std::endl;
       sleep(5);
   }
   // stuck doing something really hard...
   // ^C (ctrl+c)
   // signal: 2
}