Mercurial > hg > nginx
comparison 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 |
comparison
equal
deleted
inserted
replaced
317:1308b98496a2 | 318:56496082668b |
---|---|
47 | 47 |
48 ngx_processes[ngx_last_process].pid = pid; | 48 ngx_processes[ngx_last_process].pid = pid; |
49 ngx_processes[ngx_last_process].proc = proc; | 49 ngx_processes[ngx_last_process].proc = proc; |
50 ngx_processes[ngx_last_process].data = data; | 50 ngx_processes[ngx_last_process].data = data; |
51 ngx_processes[ngx_last_process].name = name; | 51 ngx_processes[ngx_last_process].name = name; |
52 ngx_processes[ngx_last_process].respawn = | |
53 (respawn == NGX_PROCESS_RESPAWN) ? 1 : 0; | |
54 ngx_processes[ngx_last_process].detached = | |
55 (respawn == NGX_PROCESS_DETACHED) ? 1 : 0; | |
56 ngx_processes[ngx_last_process].exited = 0; | 52 ngx_processes[ngx_last_process].exited = 0; |
57 ngx_processes[ngx_last_process].exiting = 0; | 53 ngx_processes[ngx_last_process].exiting = 0; |
54 | |
55 switch (respawn) { | |
56 | |
57 case NGX_PROCESS_RESPAWN: | |
58 ngx_processes[ngx_last_process].respawn = 1; | |
59 ngx_processes[ngx_last_process].just_respawn = 0; | |
60 ngx_processes[ngx_last_process].detached = 0; | |
61 break; | |
62 | |
63 case NGX_PROCESS_JUST_RESPAWN: | |
64 ngx_processes[ngx_last_process].respawn = 1; | |
65 ngx_processes[ngx_last_process].just_respawn = 1; | |
66 ngx_processes[ngx_last_process].detached = 0; | |
67 break; | |
68 | |
69 case NGX_PROCESS_DETACHED: | |
70 ngx_processes[ngx_last_process].respawn = 0; | |
71 ngx_processes[ngx_last_process].just_respawn = 0; | |
72 ngx_processes[ngx_last_process].detached = 1; | |
73 break; | |
74 } | |
75 | |
58 ngx_last_process++; | 76 ngx_last_process++; |
59 | 77 |
60 return pid; | 78 return pid; |
61 } | 79 } |
62 | 80 |
77 "execve() failed while executing %s \"%s\"", | 95 "execve() failed while executing %s \"%s\"", |
78 ctx->name, ctx->path); | 96 ctx->name, ctx->path); |
79 } | 97 } |
80 | 98 |
81 exit(1); | 99 exit(1); |
82 } | |
83 | |
84 | |
85 void ngx_respawn_processes(ngx_cycle_t *cycle) | |
86 { | |
87 ngx_uint_t i; | |
88 | |
89 for (i = 0; i < ngx_last_process; i++) { | |
90 | |
91 if (ngx_processes[i].exiting || !ngx_processes[i].exited) { | |
92 continue; | |
93 } | |
94 | |
95 if (!ngx_processes[i].respawn) { | |
96 if (i != --ngx_last_process) { | |
97 ngx_processes[i--] = ngx_processes[ngx_last_process]; | |
98 } | |
99 continue; | |
100 } | |
101 | |
102 if (ngx_spawn_process(cycle, | |
103 ngx_processes[i].proc, ngx_processes[i].data, | |
104 ngx_processes[i].name, i) == NGX_ERROR) | |
105 { | |
106 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, | |
107 "can not respawn %s", ngx_processes[i].name); | |
108 } | |
109 } | |
110 } | 100 } |
111 | 101 |
112 | 102 |
113 void ngx_process_get_status() | 103 void ngx_process_get_status() |
114 { | 104 { |