in modules/fcgid/fcgid_pm_unix.c [55:84]
static apr_status_t create_process_manager(server_rec * main_server,
apr_pool_t * configpool);
static int g_wakeup_timeout = 0;
static apr_proc_t *g_process_manager = NULL;
static apr_file_t *g_pm_read_pipe = NULL;
static apr_file_t *g_pm_write_pipe = NULL;
static apr_file_t *g_ap_write_pipe = NULL;
static apr_file_t *g_ap_read_pipe = NULL;
static apr_global_mutex_t *g_pipelock = NULL;
static const char *g_pipelock_name;
static const char *g_pipelock_mutex_type = "fcgid-pipe";
static int volatile g_caughtSigTerm = 0;
static pid_t g_pm_pid;
static void signal_handler(int signo)
{
/* Sanity check, Make sure I am not the subprocess. A subprocess may
get signale after fork() and before execve() */
if (getpid() != g_pm_pid) {
exit(0);
return;
}
if ((signo == SIGTERM) || (signo == SIGUSR1) || (signo == SIGHUP)) {
g_caughtSigTerm = 1;
/* Tell the world it's time to die */
proctable_get_globalshare()->must_exit = 1;
}
}