/src/unit/src/nxt_signal_handlers.c
Line | Count | Source |
1 | | |
2 | | /* |
3 | | * Copyright (C) Igor Sysoev |
4 | | * Copyright (C) NGINX, Inc. |
5 | | */ |
6 | | |
7 | | #include <nxt_main.h> |
8 | | #include <nxt_runtime.h> |
9 | | #include <nxt_port.h> |
10 | | #include <nxt_main_process.h> |
11 | | #include <nxt_router.h> |
12 | | |
13 | | |
14 | | static void nxt_signal_handler(nxt_task_t *task, void *obj, void *data); |
15 | | static void nxt_signal_sigterm_handler(nxt_task_t *task, void *obj, void *data); |
16 | | static void nxt_signal_sigquit_handler(nxt_task_t *task, void *obj, void *data); |
17 | | |
18 | | |
19 | | const nxt_sig_event_t nxt_process_signals[] = { |
20 | | nxt_event_signal(SIGHUP, nxt_signal_handler), |
21 | | nxt_event_signal(SIGINT, nxt_signal_sigterm_handler), |
22 | | nxt_event_signal(SIGQUIT, nxt_signal_sigquit_handler), |
23 | | nxt_event_signal(SIGTERM, nxt_signal_sigterm_handler), |
24 | | nxt_event_signal(SIGCHLD, nxt_signal_handler), |
25 | | nxt_event_signal(SIGUSR1, nxt_signal_handler), |
26 | | nxt_event_signal(SIGUSR2, nxt_signal_handler), |
27 | | nxt_event_signal_end, |
28 | | }; |
29 | | |
30 | | |
31 | | static void |
32 | | nxt_signal_handler(nxt_task_t *task, void *obj, void *data) |
33 | 0 | { |
34 | 0 | nxt_trace(task, "signal signo:%d (%s) received, ignored", |
35 | 0 | (int) (uintptr_t) obj, data); |
36 | 0 | } |
37 | | |
38 | | |
39 | | void |
40 | | nxt_signal_quit_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg) |
41 | 0 | { |
42 | 0 | nxt_process_quit(task, 0); |
43 | 0 | } |
44 | | |
45 | | |
46 | | static void |
47 | | nxt_signal_sigterm_handler(nxt_task_t *task, void *obj, void *data) |
48 | 0 | { |
49 | 0 | nxt_debug(task, "sigterm handler signo:%d (%s)", |
50 | 0 | (int) (uintptr_t) obj, data); |
51 | | |
52 | | /* A fast exit. */ |
53 | |
|
54 | 0 | nxt_runtime_quit(task, 0); |
55 | 0 | } |
56 | | |
57 | | |
58 | | static void |
59 | | nxt_signal_sigquit_handler(nxt_task_t *task, void *obj, void *data) |
60 | 0 | { |
61 | 0 | nxt_debug(task, "sigquit handler signo:%d (%s)", |
62 | 0 | (int) (uintptr_t) obj, data); |
63 | | |
64 | | /* A graceful exit. */ |
65 | |
|
66 | 0 | nxt_process_quit(task, 0); |
67 | 0 | } |