diff --git a/src/frontend/signal_handler.c b/src/frontend/signal_handler.c index 204d54ab6..6a53c633f 100644 --- a/src/frontend/signal_handler.c +++ b/src/frontend/signal_handler.c @@ -73,6 +73,8 @@ ft_sigintr_cleanup(void) RETSIGTYPE ft_sigintr(void) { + static int interrupt_counter = 0; + /* fprintf(cp_err, "Received interrupt. Handling it . . . . .\n"); */ /* Reinstall ft_signintr as the signal handler. */ @@ -80,9 +82,16 @@ ft_sigintr(void) if (ft_intrpt) { /* check to see if we're being interrupted repeatedly */ fprintf(cp_err, "\nInterrupted again (ouch)\n"); + interrupt_counter++; } else { fprintf(cp_err, "\nInterrupted once . . .\n"); ft_intrpt = TRUE; + interrupt_counter = 1; + } + + if (interrupt_counter >= 3) { + fprintf(cp_err, "\nKilling, since %d interrupts have been requested\n\n", interrupt_counter); + controlled_exit(1); } if (ft_setflag) {