diff options
author | Ian Jauslin <ian.jauslin@rutgers.edu> | 2023-04-12 15:23:35 -0400 |
---|---|---|
committer | Ian Jauslin <ian.jauslin@rutgers.edu> | 2023-04-12 15:23:35 -0400 |
commit | 8bb80c0b0fbc1f8f18451bfed5d011785f94d068 (patch) | |
tree | 87806fd9e34c48764a6a9ee90fea4ff5c56cc357 /src/main.c | |
parent | 59100a471f90b46023741c16fffb69f72e6b8edd (diff) |
Handle SIGINT
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -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){ |