|
|
|
|
@@ -60,6 +60,33 @@ void PISignals::grabSignals(PIFlags<PISignals::Signal> signals_) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PISignals::releaseSignals(PIFlags<Signal> signals_) {
|
|
|
|
|
if (signals_[PISignals::Interrupt]) signal(signalCode(PISignals::Interrupt), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Illegal]) signal(signalCode(PISignals::Illegal), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Abort]) signal(signalCode(PISignals::Abort), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::FPE]) signal(signalCode(PISignals::FPE), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::SegFault]) signal(signalCode(PISignals::SegFault), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Termination]) signal(signalCode(PISignals::Termination), SIG_DFL);
|
|
|
|
|
#ifndef CC_VC
|
|
|
|
|
if (signals_[PISignals::UserDefined1]) signal(signalCode(PISignals::UserDefined1), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::UserDefined2]) signal(signalCode(PISignals::UserDefined2), SIG_DFL);
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef WINDOWS
|
|
|
|
|
if (signals_[PISignals::Hangup]) signal(signalCode(PISignals::Hangup), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Quit]) signal(signalCode(PISignals::Quit), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Kill]) signal(signalCode(PISignals::Kill), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::BrokenPipe]) signal(signalCode(PISignals::BrokenPipe), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Timer]) signal(signalCode(PISignals::Timer), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::ChildStopped]) signal(signalCode(PISignals::ChildStopped), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::Continue]) signal(signalCode(PISignals::Continue), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::StopProcess]) signal(signalCode(PISignals::StopProcess), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::StopTTY]) signal(signalCode(PISignals::StopTTY), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::StopTTYInput]) signal(signalCode(PISignals::StopTTYInput), SIG_DFL);
|
|
|
|
|
if (signals_[PISignals::StopTTYOutput]) signal(signalCode(PISignals::StopTTYOutput), SIG_DFL);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PISignals::raiseSignal(PISignals::Signal signal) {
|
|
|
|
|
raise(signalCode(signal));
|
|
|
|
|
}
|
|
|
|
|
@@ -90,7 +117,7 @@ int PISignals::signalCode(PISignals::Signal signal) {
|
|
|
|
|
case PISignals::StopTTYInput: return SIGTTIN;
|
|
|
|
|
case PISignals::StopTTYOutput: return SIGTTOU;
|
|
|
|
|
#endif
|
|
|
|
|
default:;
|
|
|
|
|
default: break;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
@@ -121,13 +148,13 @@ PISignals::Signal PISignals::signalFromCode(int signal) {
|
|
|
|
|
case SIGTTIN: return PISignals::StopTTYInput;
|
|
|
|
|
case SIGTTOU: return PISignals::StopTTYOutput;
|
|
|
|
|
#endif
|
|
|
|
|
default:;
|
|
|
|
|
default: break;
|
|
|
|
|
}
|
|
|
|
|
return PISignals::Termination;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PISignals::signal_event(int signal) {
|
|
|
|
|
if (PISignals::ret_func == 0) return;
|
|
|
|
|
if (!PISignals::ret_func) return;
|
|
|
|
|
PISignals::ret_func(PISignals::signalFromCode(signal));
|
|
|
|
|
}
|
|
|
|
|
|