From b848e0c390707ff360443caa7cffa3fbf9215bde Mon Sep 17 00:00:00 2001 From: marwik15 Date: Wed, 11 May 2022 10:00:08 +0200 Subject: Change signal to sigaction --- examples/sinewave/sinewave_example.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'examples') diff --git a/examples/sinewave/sinewave_example.cpp b/examples/sinewave/sinewave_example.cpp index a0089d9..8b50804 100644 --- a/examples/sinewave/sinewave_example.cpp +++ b/examples/sinewave/sinewave_example.cpp @@ -10,11 +10,10 @@ #include +volatile sig_atomic_t keep_running{ 1 }; -volatile bool signalEnd = false; - -void sig_handler(int signum) { - signalEnd = true; +void termination_handler(int signum){ + keep_running = false; } using seconds = std::chrono::duration; @@ -22,7 +21,13 @@ using Clock = std::chrono::high_resolution_clock; int main(int argc, char* argv[]) { - signal(SIGINT, sig_handler); + struct sigaction int_action; + + int_action.sa_handler = termination_handler; + sigemptyset(&int_action.sa_mask); + int_action.sa_flags = 0; + sigaction(SIGINT, &int_action, NULL); + seconds interval{ 0.01 }; int i = 0; @@ -51,7 +56,7 @@ int main(int argc, char* argv[]) { } - while (!signalEnd) { + while (keep_running) { if (i >= samples) break; i++; -- cgit v1.1