aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix/ngx_process.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-04-16 05:14:16 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-04-16 05:14:16 +0000
commit630ad0c7b17b4e20d978706d3884995481f28b3c (patch)
tree794f7617a06a007f98149fa11c1ebc92827c29a5 /src/os/unix/ngx_process.c
parent68df19d33ac5cf804650261867afd5f8acdce364 (diff)
downloadnginx-630ad0c7b17b4e20d978706d3884995481f28b3c.tar.gz
nginx-630ad0c7b17b4e20d978706d3884995481f28b3c.zip
nginx-0.0.3-2004-04-16-09:14:16 import
Diffstat (limited to 'src/os/unix/ngx_process.c')
-rw-r--r--src/os/unix/ngx_process.c54
1 files changed, 22 insertions, 32 deletions
diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c
index 8736da781..aebf4ea36 100644
--- 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 *cycle,
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 *cycle, void *data)
}
-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;