/* * Created by yuuta on 7/24/22. */ #include "handler.h" #include "log.h" static uv_signal_t sigint; static struct uv_obj obj_sigint = { .obj = &sigint, .running = false }; static uv_signal_t sigterm; static struct uv_obj obj_sigterm = { .obj = &sigterm, .running = false }; static void on_signal(uv_signal_t *handle, int signum) { LOGDV("on_signal(handle = %p): %d", handle, signum); uv_signal_stop(&sigint); obj_sigint.running = false; uv_signal_stop(&sigterm); obj_sigterm.running = false; on_exit(EXIT_SIGNAL); } int h_signal(void) { int r; if ((r = uv_signal_init(loop, &sigint))) return r; if ((r = uv_signal_start(&sigint, on_signal, SIGINT))) return r; obj_sigint.running = true; if ((r = uv_signal_init(loop, &sigterm))) return r; if ((r = uv_signal_start(&sigterm, on_signal, SIGTERM))) return r; obj_sigterm.running = true; return 0; }