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 {