22static sigset_t block_sigset;
23static sigset_t child_block_sigset;
123 [SIGWAITING] =
"SIGWAITING",
129 [SIGFREEZE] =
"SIGFREEZE",
132 [SIGTHAW] =
"SIGTHAW",
135 [SIGCANCEL] =
"SIGCANCEL",
138 [SIGLOST] =
"SIGLOST",
142static void sig_soft_quit(
int signo)
144 int saved_errno =
errno;
156static void sig_handler(
int signo)
158 static const char sig_chars[
NSIG + 1] = {
179 s = sig_chars[signo];
187 struct sigaction act;
194 if (0 > fd_set_blocked(sp[0], 0) || 0 > fd_set_blocked(sp[1], 0)) {
204 memset(&act, 0,
sizeof(act));
205 act.sa_handler = sig_handler;
206 sigfillset(&act.sa_mask);
208 if (0 > sigaction(
SIGTERM, &act, 0) ||
209 0 > sigaction(
SIGINT, &act, 0) ||
210 0 > sigaction(
SIGUSR1, &act, 0) ||
211 0 > sigaction(
SIGUSR2, &act, 0) ||
212 0 > sigaction(
SIGCHLD, &act, 0) ||
213 0 > sigaction(
SIGQUIT, &act, 0)) {
228 struct sigaction act, act_dfl;
230 memset(&act, 0,
sizeof(act));
231 memset(&act_dfl, 0,
sizeof(act_dfl));
233 act.sa_handler = &sig_soft_quit;
234 act.sa_flags |= SA_RESTART;
241 if (0 > sigaction(
SIGTERM, &act_dfl, 0) ||
242 0 > sigaction(
SIGINT, &act_dfl, 0) ||
243 0 > sigaction(
SIGUSR1, &act_dfl, 0) ||
244 0 > sigaction(
SIGUSR2, &act_dfl, 0) ||
245 0 > sigaction(
SIGCHLD, &act_dfl, 0) ||
246 0 > sigaction(
SIGQUIT, &act, 0)) {
271 size_t size =
sizeof(init_signal_array)/
sizeof(init_signal_array[0]);
273 if (0 > sigemptyset(&block_sigset) ||
274 0 > sigemptyset(&child_block_sigset)) {
278 for (i = 0; i <
size; ++i) {
279 int sig_i = init_signal_array[i];
280 if (0 > sigaddset(&block_sigset, sig_i) ||
281 0 > sigaddset(&child_block_sigset, sig_i)) {
286 zlog(
ZLOG_SYSERROR,
"failed to prepare signal block mask: sigaddset(%d)", sig_i);
291 if (0 > sigaddset(&child_block_sigset,
SIGTERM) ||
292 0 > sigaddset(&child_block_sigset,
SIGQUIT)) {
321 sigset_t all_signals;
322 sigfillset(&all_signals);
memset(ptr, 0, type->size)
struct fpm_globals_s fpm_globals
void fpm_php_soft_quit(void)
int fpm_signals_get_fd(void)
int fpm_signals_init_mask(void)
int fpm_signals_unblock(void)
int fpm_signals_init_child(void)
int fpm_signals_init_main(void)
const char * fpm_signal_names[NSIG+1]
int fpm_signals_block(void)
int fpm_signals_child_block(void)
PHPAPI int socketpair(int domain, int type, int protocol, SOCKET sock[2])
#define zend_quiet_write(...)
#define zend_signal_init()