API_EXPORT(piped_log *) ap_open_piped_log (pool *p, const char *program) { piped_log *pl; FILE *dummy; if (!ap_spawn_child(p, piped_log_child, (void *)program, kill_after_timeout, &dummy, NULL, NULL)) { perror ("ap_spawn_child"); fprintf (stderr, "Couldn't fork child for piped log process\n"); exit (1); } pl = ap_palloc (p, sizeof (*pl)); pl->p = p; pl->write_f = dummy; return pl; }
static void open_error_log (server_rec *s, pool *p) { char *fname; if (*s->error_fname == '|') { FILE *dummy; if (!ap_spawn_child(p, error_log_child, (void *)(s->error_fname+1), kill_after_timeout, &dummy, NULL, NULL)) { perror ("ap_spawn_child"); fprintf (stderr, "Couldn't fork child for ErrorLog process\n"); exit (1); } s->error_log = dummy; } #ifdef HAVE_SYSLOG else if (!strncasecmp(s->error_fname, "syslog", 6)) { if ((fname = strchr(s->error_fname, ':'))) { const TRANS *fac; fname++; for (fac = facilities; fac->t_name; fac++) { if (!strcasecmp(fname, fac->t_name)) { openlog("httpd", LOG_NDELAY|LOG_CONS|LOG_PID, fac->t_val); s->error_log = NULL; return; } } } else openlog("httpd", LOG_NDELAY|LOG_CONS|LOG_PID, LOG_LOCAL7); s->error_log = NULL; } #endif else { fname = ap_server_root_relative (p, s->error_fname); if(!(s->error_log = ap_pfopen(p, fname, "a"))) { perror("fopen"); fprintf(stderr,"httpd: could not open error log file %s.\n", fname); exit(1); } } }
static void db4_init(server_rec *s, pool *p) { int mpid; env_locks_init(); mpid=ap_spawn_child(p, moderator_main, NULL, kill_always, NULL, NULL, NULL); }