in modules/fcgid/fcgid_pm_main.c [370:406]
static int reclaim_one_pid(server_rec *main_server, fcgid_procnode *proc,
action_t action)
{
int exitcode;
apr_exit_why_e exitwhy;
apr_wait_how_e wait_how = action == HARD_WAIT ? APR_WAIT : APR_NOWAIT;
if (apr_proc_wait(&proc->proc_id, &exitcode, &exitwhy,
wait_how) != APR_CHILD_NOTDONE) {
proc->diewhy = FCGID_DIE_SHUTDOWN;
proc_print_exit_info(proc, exitcode, exitwhy,
main_server);
proc->proc_pool = NULL;
return 1;
}
switch(action) {
case DO_NOTHING:
case HARD_WAIT:
break;
case KILL_GRACEFULLY:
proc_kill_gracefully(proc, main_server);
break;
case KILL_FORCEFULLY:
ap_log_error(APLOG_MARK, APLOG_ERR, 0, main_server,
"FastCGI process %" APR_PID_T_FMT
" still did not exit, "
"terminating forcefully",
proc->proc_id.pid);
proc_kill_force(proc, main_server);
break;
}
return 0;
}