28 #include <utils/system/signal.h>
62 SignalManager * SignalManager::__instance = NULL;
63 SignalHandler * SignalManager::__signal_handlers[NSIG];
66 SignalManager::SignalManager()
72 SignalManager::SignalManager(
const SignalManager &cc)
83 if ( __instance == NULL ) {
85 for (
unsigned int i = 0; i < NSIG; ++i) {
86 __signal_handlers[i] = NULL;
100 if ( __instance != NULL ) {
101 for (
unsigned int i = 0; i < NSIG; ++i) {
120 __signal_handlers[signum] = handler;
124 sa.sa_handler = SignalManager::dispatcher;
125 sigemptyset (&sa.sa_mask);
127 sigaction (signum, &sa, 0);
142 restore_default(signum);
154 for (
unsigned int i = 0; i < NSIG; ++i) {
155 if ( __signal_handlers[i] == handler ) {
163 SignalManager::restore_default(
int signum)
166 __signal_handlers[signum] = NULL;
170 sa.sa_handler = SIG_DFL;
171 sigemptyset (&sa.sa_mask);
173 sigaction (signum, &sa, 0);
185 __signal_handlers[signum] = NULL;
189 sa.sa_handler = SIG_IGN;
190 sigemptyset (&sa.sa_mask);
192 sigaction (signum, &sa, 0);
201 SignalManager::dispatcher(
int signum)
203 if (__signal_handlers[signum] != NULL) {