How do I gracefully handle signals and termination?

Handling signals gracefully in C++ is essential for ensuring that your application can clean up resources and exit properly when it receives termination signals. Here's how you can set up signal handling in a C++ program:

#include <csignal> #include <iostream> void signalHandler(int signum) { std::cout << "Caught signal: " << signum << std::endl; // Clean up and close up stuff here // Terminate the program exit(signum); } int main() { // Register signal handler signal(SIGINT, signalHandler); // Ctrl+C signal(SIGTERM, signalHandler); // Termination signal while (true) { std::cout << "Running... Press Ctrl+C to exit." << std::endl; sleep(1); } return 0; }

C++ signal handling termination signals graceful exit