]> rtime.felk.cvut.cz Git - coffee/mt-apps.git/blob - signal_exit.c
mt_server: Use "%s" format string in syslog()
[coffee/mt-apps.git] / signal_exit.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include "signal_exit.h"
4
5 static int sigs[] = {SIGINT, SIGKILL, SIGTERM, SIGSEGV, SIGFPE};
6 static struct ev_signal signals[5];
7
8 static void signal_cb(EV_P_ ev_signal *w, int revents)
9 {
10     fprintf(stderr, "signal caught, terminating\n");
11     switch (w->signum) {
12         case SIGTERM:
13         case SIGINT:
14             ev_break(loop, EVBREAK_ALL);
15             break;
16         default:
17             signal(SIGABRT, SIG_DFL);
18             abort();
19             break;
20     }
21 }
22
23 void set_signal_exit(struct ev_loop *loop)
24 {
25     for (int i = 0; i < 5; i++) {
26         ev_signal_init(&signals[i], signal_cb, sigs[i]);
27         ev_signal_start(loop, &signals[i]);
28     }
29 }
30