diff --git a/one.cpp b/one.cpp index c8a9dddf4..aba3bac2b 100644 --- a/one.cpp +++ b/one.cpp @@ -1480,8 +1480,13 @@ static int idtool(int argc,char **argv) static void _sighandlerHup(int sig) { } +static void _sighandlerReallyQuit(int sig) +{ + exit(0); +} static void _sighandlerQuit(int sig) { + alarm(5); // force exit after 5s OneService *s = zt1Service; if (s) s->terminate(); @@ -1873,7 +1878,7 @@ int main(int argc,char **argv) signal(SIGIO,SIG_IGN); signal(SIGUSR1,SIG_IGN); signal(SIGUSR2,SIG_IGN); - signal(SIGALRM,SIG_IGN); + signal(SIGALRM,&_sighandlerReallyQuit); signal(SIGINT,&_sighandlerQuit); signal(SIGTERM,&_sighandlerQuit); signal(SIGQUIT,&_sighandlerQuit);