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 {