...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <csignal>
volatile sig_atomic_t signal_flag = 0;
static void g() noexcept(false);
extern "C" void sig_handler(int sig) {
signal_flag = 1;
}
void finstall_signal_handler() {
if (SIG_ERR == std::signal(SIGTERM, sig_handler)) {
// Handle error
}
}
// Called periodically to poll the signal flag.
void poll_signal_flag() {
if (signal_flag == 1) {
signal_flag = 0;
try {
g();
} catch(...) {
// Handle error
}
}
} |
...