Mercurial > hg > nginx
comparison src/os/unix/ngx_posix_init.c @ 218:05592fd7a436
nginx-0.0.1-2004-01-05-23:55:48 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 05 Jan 2004 20:55:48 +0000 |
parents | 679f60139863 |
children | f57597ec5249 |
comparison
equal
deleted
inserted
replaced
217:c5d1cdcb04ec | 218:05592fd7a436 |
---|---|
6 int ngx_max_sockets; | 6 int ngx_max_sockets; |
7 int ngx_inherited_nonblocking; | 7 int ngx_inherited_nonblocking; |
8 | 8 |
9 | 9 |
10 void ngx_signal_handler(int signo); | 10 void ngx_signal_handler(int signo); |
11 void ngx_exit_signal_handler(int signo); | |
12 void ngx_restart_signal_handler(int signo); | |
13 void ngx_rotate_signal_handler(int signo); | |
14 | 11 |
15 | 12 |
16 typedef struct { | 13 typedef struct { |
17 int signo; | 14 int signo; |
18 char *signame; | 15 char *signame; |
20 void (*handler)(int signo); | 17 void (*handler)(int signo); |
21 } ngx_signal_t; | 18 } ngx_signal_t; |
22 | 19 |
23 | 20 |
24 ngx_signal_t signals[] = { | 21 ngx_signal_t signals[] = { |
25 { ngx_signal_value(NGX_RESTART_SIGNAL), | 22 { ngx_signal_value(NGX_RECONFIGURE_SIGNAL), |
26 "SIG" ngx_value(NGX_RESTART_SIGNAL), | 23 "SIG" ngx_value(NGX_RECONFIGURE_SIGNAL), |
27 "restarting", | 24 ", reconfiguring", |
28 ngx_signal_handler }, | 25 ngx_signal_handler }, |
29 | 26 |
30 { ngx_signal_value(NGX_ROTATE_SIGNAL), | 27 { ngx_signal_value(NGX_REOPEN_SIGNAL), |
31 "SIG" ngx_value(NGX_ROTATE_SIGNAL), | 28 "SIG" ngx_value(NGX_REOPEN_SIGNAL), |
32 "reopen logs", | 29 ", reopen logs", |
33 ngx_signal_handler }, | 30 ngx_signal_handler }, |
34 | 31 |
35 { ngx_signal_value(NGX_INTERRUPT_SIGNAL), | 32 { ngx_signal_value(NGX_INTERRUPT_SIGNAL), |
36 "SIG" ngx_value(NGX_INTERRUPT_SIGNAL), | 33 "SIG" ngx_value(NGX_INTERRUPT_SIGNAL), |
37 "exiting", | 34 ", exiting", |
35 ngx_signal_handler }, | |
36 | |
37 { ngx_signal_value(NGX_TERMINATE_SIGNAL), | |
38 "SIG" ngx_value(NGX_TERMINATE_SIGNAL), | |
39 ", exiting", | |
38 ngx_signal_handler }, | 40 ngx_signal_handler }, |
39 | 41 |
40 { ngx_signal_value(NGX_SHUTDOWN_SIGNAL), | 42 { ngx_signal_value(NGX_SHUTDOWN_SIGNAL), |
41 "SIG" ngx_value(NGX_SHUTDOWN_SIGNAL), | 43 "SIG" ngx_value(NGX_SHUTDOWN_SIGNAL), |
42 "shutdowning", | 44 ", shutdowning", |
43 ngx_signal_handler }, | 45 ngx_signal_handler }, |
44 | 46 |
45 { SIGCHLD, "SIGCHLD", NULL, ngx_sigchld_handler }, | 47 { ngx_signal_value(NGX_CHANGEBIN_SIGNAL), |
48 "SIG" ngx_value(NGX_CHANGEBIN_SIGNAL), | |
49 ", changing binary", | |
50 ngx_signal_handler }, | |
51 | |
52 { SIGCHLD, "SIGCHLD", "", ngx_signal_handler }, | |
46 | 53 |
47 { SIGPIPE, "SIGPIPE, SIG_IGN", NULL, SIG_IGN }, | 54 { SIGPIPE, "SIGPIPE, SIG_IGN", NULL, SIG_IGN }, |
48 | 55 |
49 { 0, NULL, NULL, NULL } | 56 { 0, NULL, NULL, NULL } |
50 }; | 57 }; |
89 } | 96 } |
90 | 97 |
91 | 98 |
92 void ngx_signal_handler(int signo) | 99 void ngx_signal_handler(int signo) |
93 { | 100 { |
94 ngx_signal_t *sig; | 101 struct timeval tv; |
102 ngx_signal_t *sig; | |
95 | 103 |
96 for (sig = signals; sig->signo != 0; sig++) { | 104 for (sig = signals; sig->signo != 0; sig++) { |
97 if (sig->signo == signo) { | 105 if (sig->signo == signo) { |
98 break; | 106 break; |
99 } | 107 } |
100 } | 108 } |
101 | 109 |
102 #if (HAVE_STRSIGNAL) | 110 ngx_gettimeofday(&tv); |
111 ngx_time_update(tv.tv_sec); | |
103 | 112 |
104 ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, | 113 ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, |
105 "signal #%d (%s: %s) received, %s", | 114 "signal %d (%s) received%s", |
106 signo, sig->signame, strsignal(signo), sig->action); | |
107 #else | |
108 | |
109 ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, | |
110 "signal #%d (%s) received, %s", | |
111 signo, sig->signame, sig->action); | 115 signo, sig->signame, sig->action); |
112 | |
113 #endif | |
114 | 116 |
115 switch (signo) { | 117 switch (signo) { |
116 | 118 |
117 /* STUB */ | 119 case SIGCHLD: |
118 case SIGQUIT: | 120 ngx_process_get_status(); |
119 case SIGABRT: | 121 break; |
120 | 122 |
121 case ngx_signal_value(NGX_SHUTDOWN_SIGNAL): | 123 case ngx_signal_value(NGX_SHUTDOWN_SIGNAL): |
122 case ngx_signal_value(NGX_INTERRUPT_SIGNAL): | 124 ngx_quit = 1; |
123 done = 1; | |
124 break; | 125 break; |
125 | 126 |
126 case ngx_signal_value(NGX_RESTART_SIGNAL): | 127 case ngx_signal_value(NGX_TERMINATE_SIGNAL): |
127 restart = 1; | 128 case ngx_signal_value(NGX_INTERRUPT_SIGNAL): |
129 ngx_terminate = 1; | |
128 break; | 130 break; |
129 | 131 |
130 case ngx_signal_value(NGX_ROTATE_SIGNAL): | 132 case ngx_signal_value(NGX_RECONFIGURE_SIGNAL): |
131 rotate = 1; | 133 ngx_reconfigure = 1; |
134 break; | |
135 | |
136 case ngx_signal_value(NGX_REOPEN_SIGNAL): | |
137 ngx_reopen = 1; | |
138 break; | |
139 | |
140 case ngx_signal_value(NGX_CHANGEBIN_SIGNAL): | |
141 ngx_change_binary = 1; | |
132 break; | 142 break; |
133 } | 143 } |
134 } | |
135 | |
136 | |
137 void ngx_exit_signal_handler(int signo) | |
138 { | |
139 char *s; | |
140 | |
141 s = strsignal(signo); | |
142 ngx_log_error(NGX_LOG_INFO, ngx_cycle->log, 0, | |
143 "%s signal received, exiting", s); | |
144 done = 1; | |
145 } | |
146 | |
147 | |
148 void ngx_restart_signal_handler(int signo) | |
149 { | |
150 restart = 1; | |
151 } | |
152 | |
153 | |
154 void ngx_rotate_signal_handler(int signo) | |
155 { | |
156 rotate = 1; | |
157 } | 144 } |
158 | 145 |
159 | 146 |
160 int ngx_posix_post_conf_init(ngx_log_t *log) | 147 int ngx_posix_post_conf_init(ngx_log_t *log) |
161 { | 148 { |