int ap_signal_server(int *exit_status, apr_pool_t *pconf) { apr_status_t rv; pid_t otherpid; int running = 0; const char *status; *exit_status = 0; rv = ap_read_pid(pconf, ap_pid_fname, &otherpid); if (rv != APR_SUCCESS) { if (!APR_STATUS_IS_ENOENT(rv)) { ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, NULL, APLOGNO(00058) "Error retrieving pid file %s", ap_pid_fname); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, APLOGNO(00059) "Remove it before continuing if it is corrupted."); *exit_status = 1; return 1; } status = "httpd (no pid file) not running"; } else { if (kill(otherpid, 0) == 0) { running = 1; status = apr_psprintf(pconf, "httpd (pid %" APR_PID_T_FMT ") already " "running", otherpid); } else { status = apr_psprintf(pconf, "httpd (pid %" APR_PID_T_FMT "?) not running", otherpid); } } if (!strcmp(dash_k_arg, "start") || dash_k_arg == dash_k_arg_noarg) { if (running) { printf("%s\n", status); return 1; } } if (!strcmp(dash_k_arg, "stop")) { if (!running) { printf("%s\n", status); } else { send_signal(otherpid, SIGTERM); } return 1; } if (!strcmp(dash_k_arg, "restart")) { if (!running) { printf("httpd not running, trying to start\n"); } else { *exit_status = send_signal(otherpid, SIGHUP); return 1; } } if (!strcmp(dash_k_arg, "graceful")) { if (!running) { printf("httpd not running, trying to start\n"); } else { *exit_status = send_signal(otherpid, AP_SIG_GRACEFUL); return 1; } } if (!strcmp(dash_k_arg, "graceful-stop")) { if (!running) { printf("%s\n", status); } else { *exit_status = send_signal(otherpid, AP_SIG_GRACEFUL_STOP); } return 1; } /* * ********** begin amiya 20140217 **************** */ if (!strcmp(dash_k_arg, "reconfigure")) { if (!running) { printf("%s\n", status); } else { *exit_status = send_signal(otherpid, AP_SIG_RECONFIGURE); } return 1; } /* * *********** end amiya 20140217 ****************** */ return 0; }
int ap_signal_server(int *exit_status, apr_pool_t *pconf) { apr_status_t rv; pid_t otherpid; int running = 0; int have_pid_file = 0; const char *status; *exit_status = 0; rv = ap_read_pid(pconf, ap_pid_fname, &otherpid); if (rv != APR_SUCCESS) { if (rv != APR_ENOENT) { ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, NULL, "Error retrieving pid file %s", ap_pid_fname); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, "Remove it before continuing if it is corrupted."); *exit_status = 1; return 1; } status = "httpd (no pid file) not running"; } else { have_pid_file = 1; if (kill(otherpid, 0) == 0) { running = 1; status = apr_psprintf(pconf, "httpd (pid %" APR_PID_T_FMT ") already " "running", otherpid); } else { status = apr_psprintf(pconf, "httpd (pid %" APR_PID_T_FMT "?) not running", otherpid); } } if (!strcmp(dash_k_arg, "start")) { if (running) { printf("%s\n", status); return 1; } } if (!strcmp(dash_k_arg, "stop")) { if (!running) { printf("%s\n", status); } else { send_signal(otherpid, SIGTERM); } return 1; } if (!strcmp(dash_k_arg, "restart")) { if (!running) { printf("httpd not running, trying to start\n"); } else { *exit_status = send_signal(otherpid, SIGHUP); return 1; } } if (!strcmp(dash_k_arg, "graceful")) { if (!running) { printf("httpd not running, trying to start\n"); } else { *exit_status = send_signal(otherpid, AP_SIG_GRACEFUL); return 1; } } if (!strcmp(dash_k_arg, "graceful-stop")) { #ifdef AP_MPM_WANT_SET_GRACEFUL_SHUTDOWN if (!running) { printf("%s\n", status); } else { *exit_status = send_signal(otherpid, AP_SIG_GRACEFUL_STOP); } #else printf("httpd MPM \"" MPM_NAME "\" does not support graceful-stop\n"); #endif return 1; } return 0; }