I am trying to trap SIGTERM using a class I derive from TSignalHandler.
I assumed it would be very much like what I've done succesfully with
TTimer.
Immediately after the instance is created, I get the following message:
SysError in <UnixSignal>: sigaction (Success)
My code is:
/////////////////////////////////////////////
#include "TSystem.h"
#include "TSysEvtHandler.h"
#include <signal.h>
class SignalTrap: public TSignalHandler
{
private:
ESignals signal;
public:
SignalTrap(ESignals sig);
Bool_t Notify();
ESignals GetMySignal()
{
return(signal);
}
};
SignalTrap::SignalTrap(ESignals sig): TSignalHandler(sig)
{
signal=sig;
gSystem->AddSignalHandler(this);
}
Bool_t SignalTrap::Notify()
{
printf("trapped a signal\n");
return kTRUE;
}
//////////////////////////////////////
and I instantiate with:
SignalTrap *sigtrap = new SignalTrap((ESignals)SIGTERM);
Calls to GetMySignal and GetSignal return 15, as expected. Sending
kill or kill -s 15 to the process, I dont see that Notify() has been
entered.
Regards,
Cyril