Mercurial > hg > nginx
diff src/os/unix/ngx_process.c @ 318:56496082668b
nginx-0.0.3-2004-04-16-09:14:16 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 16 Apr 2004 05:14:16 +0000 |
parents | 6b91bfbc4123 |
children | eaf1f651cf86 |
line wrap: on
line diff
--- a/src/os/unix/ngx_process.c +++ b/src/os/unix/ngx_process.c @@ -49,12 +49,30 @@ ngx_pid_t ngx_spawn_process(ngx_cycle_t ngx_processes[ngx_last_process].proc = proc; ngx_processes[ngx_last_process].data = data; ngx_processes[ngx_last_process].name = name; - ngx_processes[ngx_last_process].respawn = - (respawn == NGX_PROCESS_RESPAWN) ? 1 : 0; - ngx_processes[ngx_last_process].detached = - (respawn == NGX_PROCESS_DETACHED) ? 1 : 0; ngx_processes[ngx_last_process].exited = 0; ngx_processes[ngx_last_process].exiting = 0; + + switch (respawn) { + + case NGX_PROCESS_RESPAWN: + ngx_processes[ngx_last_process].respawn = 1; + ngx_processes[ngx_last_process].just_respawn = 0; + ngx_processes[ngx_last_process].detached = 0; + break; + + case NGX_PROCESS_JUST_RESPAWN: + ngx_processes[ngx_last_process].respawn = 1; + ngx_processes[ngx_last_process].just_respawn = 1; + ngx_processes[ngx_last_process].detached = 0; + break; + + case NGX_PROCESS_DETACHED: + ngx_processes[ngx_last_process].respawn = 0; + ngx_processes[ngx_last_process].just_respawn = 0; + ngx_processes[ngx_last_process].detached = 1; + break; + } + ngx_last_process++; return pid; @@ -82,34 +100,6 @@ static void ngx_execute_proc(ngx_cycle_t } -void ngx_respawn_processes(ngx_cycle_t *cycle) -{ - ngx_uint_t i; - - for (i = 0; i < ngx_last_process; i++) { - - if (ngx_processes[i].exiting || !ngx_processes[i].exited) { - continue; - } - - if (!ngx_processes[i].respawn) { - if (i != --ngx_last_process) { - ngx_processes[i--] = ngx_processes[ngx_last_process]; - } - continue; - } - - if (ngx_spawn_process(cycle, - ngx_processes[i].proc, ngx_processes[i].data, - ngx_processes[i].name, i) == NGX_ERROR) - { - ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, - "can not respawn %s", ngx_processes[i].name); - } - } -} - - void ngx_process_get_status() { int status;