diff options
author | marwik15 <marwik15@gmail.com> | 2022-05-11 10:00:08 +0200 |
---|---|---|
committer | marwik15 <marwik15@gmail.com> | 2022-05-11 10:00:08 +0200 |
commit | b848e0c390707ff360443caa7cffa3fbf9215bde (patch) | |
tree | 76a5e75f716b04a6166f1eb7be548b84b25f3d6c /examples | |
parent | e8230a2e6354978d6da6009b7720cd3915e247e9 (diff) | |
download | hwd-b848e0c390707ff360443caa7cffa3fbf9215bde.zip hwd-b848e0c390707ff360443caa7cffa3fbf9215bde.tar.gz hwd-b848e0c390707ff360443caa7cffa3fbf9215bde.tar.bz2 |
Change signal to sigaction
Diffstat (limited to 'examples')
-rw-r--r-- | examples/sinewave/sinewave_example.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
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 <hwd.h> +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<double>; @@ -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++; |