62 |
* @author Jan-Henrik Haukeland, <hauk@tildeslash.com> |
* @author Jan-Henrik Haukeland, <hauk@tildeslash.com> |
63 |
* |
* |
64 |
* @version \$Id$ |
* @version \$Id$ |
|
* |
|
65 |
* @file |
* @file |
66 |
*/ |
*/ |
67 |
|
|
126 |
sigemptyset(&mask); |
sigemptyset(&mask); |
127 |
pthread_sigmask(SIG_SETMASK, &mask, NULL); |
pthread_sigmask(SIG_SETMASK, &mask, NULL); |
128 |
|
|
|
/* Unregister Signal handlers */ |
|
129 |
signal(SIGTERM, SIG_DFL); |
signal(SIGTERM, SIG_DFL); |
130 |
signal(SIGUSR1, SIG_DFL); |
signal(SIGUSR1, SIG_DFL); |
131 |
signal(SIGPIPE, SIG_DFL); |
signal(SIGPIPE, SIG_DFL); |
136 |
*/ |
*/ |
137 |
umask(Run.umask); |
umask(Run.umask); |
138 |
|
|
|
/* |
|
|
* Redirect the standard file descriptors |
|
|
*/ |
|
139 |
redirect_stdfd(); |
redirect_stdfd(); |
140 |
|
|
|
/* |
|
|
* Switch uid and gid if requested |
|
|
*/ |
|
141 |
if(C->has_gid) { |
if(C->has_gid) { |
142 |
if(0 != setgid(C->gid)) { |
if(0 != setgid(C->gid)) { |
143 |
log("Failed to change gid to '%d' for '%s'\n", |
log("Failed to change gid to '%d' for '%s'\n", |
151 |
} |
} |
152 |
} |
} |
153 |
|
|
|
/* |
|
|
* Set the MONIT_xxx environment variables |
|
|
*/ |
|
154 |
set_monit_environment(S, C); |
set_monit_environment(S, C); |
155 |
|
|
|
/* |
|
|
* The exec statement done by the second child |
|
|
*/ |
|
156 |
(void) execv(C->arg[0], C->arg); |
(void) execv(C->arg[0], C->arg); |
157 |
exec_alert_mail(S, C); |
exec_alert_mail(S, C); |
158 |
log("Could not execute %s\n", C->arg[0]); |
log("Error: Could not execute %s\n", C->arg[0]); |
159 |
_exit(1); |
_exit(1); |
160 |
|
|
161 |
} |
} |
222 |
|
|
223 |
int i; |
int i; |
224 |
char buf[10][STRLEN]; |
char buf[10][STRLEN]; |
225 |
|
char *date= get_RFC822date(NULL); |
226 |
|
|
227 |
snprintf(buf[0], STRLEN, "MONIT_PROGRAM_PID=%d", is_process_running(s)); |
snprintf(buf[0], STRLEN, "MONIT_PROGRAM_PID=%d", is_process_running(s)); |
228 |
snprintf(buf[1], STRLEN, "MONIT_PROGRAM=%s", c->arg[0]); |
snprintf(buf[1], STRLEN, "MONIT_PROGRAM=%s", c->arg[0]); |
229 |
snprintf(buf[2], STRLEN, "MONIT_DATE=%s", get_RFC822date(NULL)); |
snprintf(buf[2], STRLEN, "MONIT_DATE=%s", date); |
230 |
snprintf(buf[3], STRLEN, "MONIT_HOST=%s", Run.localhostname); |
snprintf(buf[3], STRLEN, "MONIT_HOST=%s", Run.localhostname); |
231 |
snprintf(buf[4], STRLEN, "MONIT_PROGRAM_MEMORY=%ld", s->procinfo->mem_kbyte); |
snprintf(buf[4], STRLEN, "MONIT_PROGRAM_MEMORY=%ld", s->procinfo->mem_kbyte); |
232 |
snprintf(buf[5], STRLEN, "MONIT_PROGRAM_CHILDREN=%d", s->procinfo->children); |
snprintf(buf[5], STRLEN, "MONIT_PROGRAM_CHILDREN=%d", s->procinfo->children); |
238 |
for(i= 0; *buf[i]; i++) |
for(i= 0; *buf[i]; i++) |
239 |
putenv(buf[i]); |
putenv(buf[i]); |
240 |
|
|
241 |
|
free(date); |
242 |
|
|
243 |
} |
} |