version 1.5, 2010/05/14 14:41:06 |
version 1.6, 2010/08/19 18:29:01 |
|
|
} |
} |
|
|
void |
void |
clear_signals(void) |
clear_signals(int after_fork) |
{ |
{ |
struct sigaction sigact; |
struct sigaction sigact; |
|
|
|
|
if (sigaction(SIGTSTP, &sigact, NULL) != 0) |
if (sigaction(SIGTSTP, &sigact, NULL) != 0) |
fatal("sigaction failed"); |
fatal("sigaction failed"); |
|
|
event_del(&ev_sighup); |
if (after_fork) { |
event_del(&ev_sigchld); |
if (sigaction(SIGHUP, &sigact, NULL) != 0) |
event_del(&ev_sigcont); |
fatal("sigaction failed"); |
event_del(&ev_sigterm); |
if (sigaction(SIGCHLD, &sigact, NULL) != 0) |
event_del(&ev_sigusr1); |
fatal("sigaction failed"); |
event_del(&ev_sigwinch); |
if (sigaction(SIGCONT, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGTERM, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGUSR1, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGWINCH, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
} else { |
|
event_del(&ev_sighup); |
|
event_del(&ev_sigchld); |
|
event_del(&ev_sigcont); |
|
event_del(&ev_sigterm); |
|
event_del(&ev_sigusr1); |
|
event_del(&ev_sigwinch); |
|
} |
} |
} |