/[monit]/monit/spawn.c
ViewVC logotype

Diff of /monit/spawn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.24 by hauk, Wed Jul 2 19:32:03 2003 UTC revision 1.25 by hauk, Thu Jul 3 02:05:37 2003 UTC
# Line 62  Line 62 
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    
# Line 127  void  spawn(Service_T S, Command_T C) { Line 126  void  spawn(Service_T S, Command_T C) {
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);
# Line 138  void  spawn(Service_T S, Command_T C) { Line 136  void  spawn(Service_T S, Command_T C) {
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",
# Line 159  void  spawn(Service_T S, Command_T C) { Line 151  void  spawn(Service_T S, Command_T C) {
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      }      }
# Line 236  static void set_monit_environment(Servic Line 222  static void set_monit_environment(Servic
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);
# Line 251  static void set_monit_environment(Servic Line 238  static void set_monit_environment(Servic
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  }  }

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26