Handle SIGINT
This commit is contained in:
16
src/main.c
16
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){
|
||||
|
||||
Reference in New Issue
Block a user