Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jauslin <ian.jauslin@rutgers.edu>2023-04-12 15:23:35 -0400
committerIan Jauslin <ian.jauslin@rutgers.edu>2023-04-12 15:23:35 -0400
commit8bb80c0b0fbc1f8f18451bfed5d011785f94d068 (patch)
tree87806fd9e34c48764a6a9ee90fea4ff5c56cc357 /src/main.c
parent59100a471f90b46023741c16fffb69f72e6b8edd (diff)
Handle SIGINT
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index cbae30e..d14f810 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3,6 +3,7 @@
#include <math.h>
#include <complex.h>
#include <fftw3.h>
+#include <signal.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
@@ -45,6 +46,9 @@ _Complex double* set_driving(unsigned int driving, nstrophy_parameters parameter
// set initial condition
_Complex double* set_init(unsigned int init, nstrophy_parameters parameters, FILE* initfile);
+// signal handler
+void sig_handler (int signo);
+
#define COMMAND_UK 1
#define COMMAND_EEA 2
#define COMMAND_QUIET 3
@@ -57,6 +61,16 @@ _Complex double* set_init(unsigned int init, nstrophy_parameters parameters, FIL
#define INIT_FILE 3
+// global variable to handle interrupts
+volatile bool g_abort = false;
+// signal handler
+void sig_handler (int signo){
+ if (signo == SIGINT){
+ g_abort = true;
+ }
+}
+
+
int main (
int argc,
const char* argv[]
@@ -126,6 +140,8 @@ int main (
uk(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.nsteps, parameters.nu, parameters.delta, parameters.L, u0, g, parameters.irreversible, parameters.print_freq, parameters.starting_time, nthreads, savefile);
}
else if(command==COMMAND_EEA){
+ // register signal handler to handle aborts
+ signal(SIGINT, sig_handler);
eea(parameters.K1, parameters.K2, parameters.N1, parameters.N2, parameters.nsteps, parameters.nu, parameters.delta, parameters.L, u0, g, parameters.irreversible, parameters.print_freq, parameters.avg_window, parameters.starting_time, nthreads, savefile);
}
else if(command==COMMAND_QUIET){