Às vezes, um exemplo vale mais que mil palavras: Este código em c ++ expõe um manipulador de sinal muito simples.
void gracefullShutdown(int sigNum) {
// cleanup or do wathever you need to do in case of received signal(s)
// Terminate this executable
exit(sigNum);
}
int main(int argc, char* argv[]) {
signal(SIGINT , gracefullShutdown);
signal(SIGTERM , gracefullShutdown);
std::cout << "starting..." << std::endl;
while(1);
exit(EXIT_SUCCESS);
}
Quando você pressiona Ctrl + C durante a execução deste programa, o kernel do linux enviará um sinal SIGINT para este programa, normalmente ele terminará, mas neste caso preciso, você terá a possibilidade de fazer algo antes de finalizar.