Mercurial > hg > nginx
comparison src/os/unix/ngx_process.c @ 222:99df0edb63ed
nginx-0.0.1-2004-01-09-00:02:06 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 08 Jan 2004 21:02:06 +0000 |
parents | 401154e21826 |
children | d427f1c3fe95 |
comparison
equal
deleted
inserted
replaced
221:401154e21826 | 222:99df0edb63ed |
---|---|
110 | 110 |
111 exit(1); | 111 exit(1); |
112 } | 112 } |
113 | 113 |
114 | 114 |
115 void ngx_signal_processes(ngx_cycle_t *cycle, ngx_int_t signal) | 115 void ngx_signal_processes(ngx_cycle_t *cycle, ngx_int_t signo) |
116 { | 116 { |
117 ngx_uint_t i; | 117 ngx_uint_t i; |
118 | 118 |
119 for (i = 0; i < ngx_last_process; i++) { | 119 for (i = 0; i < ngx_last_process; i++) { |
120 | 120 |
121 if (ngx_processes[i].detached) { | 121 if (ngx_processes[i].detached) { |
122 continue; | 122 continue; |
123 } | 123 } |
124 | 124 |
125 #if 0 | |
125 if (ngx_processes[i].exited) { | 126 if (ngx_processes[i].exited) { |
126 if (i != --ngx_last_process) { | 127 if (i != --ngx_last_process) { |
127 ngx_processes[i--] = ngx_processes[ngx_last_process]; | 128 ngx_processes[i--] = ngx_processes[ngx_last_process]; |
128 } | 129 } |
129 continue; | 130 continue; |
130 } | 131 } |
132 #endif | |
131 | 133 |
132 ngx_log_debug2(NGX_LOG_DEBUG_CORE, cycle->log, 0, | 134 ngx_log_debug2(NGX_LOG_DEBUG_CORE, cycle->log, 0, |
133 "kill (" PID_T_FMT ", %d)" , | 135 "kill (" PID_T_FMT ", %d)" , |
134 ngx_processes[i].pid, signal); | 136 ngx_processes[i].pid, signo); |
135 | 137 |
136 if (kill(ngx_processes[i].pid, signal) == -1) { | 138 if (kill(ngx_processes[i].pid, signo) == -1) { |
137 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, | 139 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, |
138 "kill(%d, %d) failed", ngx_processes[i].pid, signal); | 140 "kill(%d, %d) failed", ngx_processes[i].pid, signo); |
139 continue; | 141 continue; |
140 } | 142 } |
141 | 143 |
142 if (signal != ngx_signal_value(NGX_REOPEN_SIGNAL)) { | 144 if (signo != ngx_signal_value(NGX_REOPEN_SIGNAL)) { |
143 ngx_processes[i].exiting = 1; | 145 ngx_processes[i].exiting = 1; |
144 } | 146 } |
145 } | 147 } |
146 } | 148 } |
147 | 149 |
149 void ngx_respawn_processes(ngx_cycle_t *cycle) | 151 void ngx_respawn_processes(ngx_cycle_t *cycle) |
150 { | 152 { |
151 ngx_uint_t i; | 153 ngx_uint_t i; |
152 | 154 |
153 for (i = 0; i < ngx_last_process; i++) { | 155 for (i = 0; i < ngx_last_process; i++) { |
154 if (!ngx_processes[i].exited) { | 156 if (ngx_processes[i].exiting || !ngx_processes[i].exited) { |
155 continue; | 157 continue; |
156 } | 158 } |
157 | 159 |
158 if (!ngx_processes[i].respawn) { | 160 if (!ngx_processes[i].respawn) { |
159 if (i != --ngx_last_process) { | 161 if (i != --ngx_last_process) { |
210 process = ""; | 212 process = ""; |
211 | 213 |
212 for (i = 0; i < ngx_last_process; i++) { | 214 for (i = 0; i < ngx_last_process; i++) { |
213 if (ngx_processes[i].pid == pid) { | 215 if (ngx_processes[i].pid == pid) { |
214 ngx_processes[i].status = status; | 216 ngx_processes[i].status = status; |
215 | 217 ngx_processes[i].exited = 1; |
216 if (!ngx_processes[i].exiting) { | |
217 ngx_processes[i].exited = 1; | |
218 } | |
219 | |
220 process = ngx_processes[i].name; | 218 process = ngx_processes[i].name; |
221 break; | 219 break; |
222 } | 220 } |
223 } | 221 } |
224 | 222 |