summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authormarwik15 <marwik15@gmail.com>2022-05-11 10:00:08 +0200
committermarwik15 <marwik15@gmail.com>2022-05-11 10:00:08 +0200
commitb848e0c390707ff360443caa7cffa3fbf9215bde (patch)
tree76a5e75f716b04a6166f1eb7be548b84b25f3d6c /examples
parente8230a2e6354978d6da6009b7720cd3915e247e9 (diff)
downloadhwd-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.cpp17
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++;