Hi Micheal, to register handlers for any signals do like this (example for handling SIGUSR1): class AliMDCInterruptHandler : public TSignalHandler { private: AliMDC *fMDC; // alimdc to signal public: AliMDCInterruptHandler(AliMDC *mdc) : TSignalHandler(kSigUser1, kFALSE), fMDC(mdc) { } Bool_t Notify() { Info("Notify", "received a SIGUSR1 signal"); fMDC->SetStopLoop(); return kTRUE; } }; Next register this handler in your application like this: ... // install SIGUSR1 handler to allow clean interrupts gSystem->AddSignalHandler(new AliMDCInterruptHandler(this)); ... where "this" is an AliMDC object. This is quite simple and does not require any static functions (see the calling of fMDC->StopLoop(). Cheers, Fons. On Mon, 2004-01-19 at 16:10, Michael T. Gericke wrote: > Hi, > > I am writing a compiled program using ROOT. > I have the following problem: > > I need to be able to receive a standard signal > such as "SIGUSR" as defined in signal.h, from > another application and respond to it. > > Now, the function that handles the signal in the > ROOT program needs to be a static class member > (as far as I can tell that's the only way it works > using signal.h). > > I have made the function a static member of my > program's main frame (TGMainFrame class). > > However, I can not call any of the other member > functions (which I need to be able to do) because, > well..., the static member function doesn't have > access to those. > > My questions are: > > 1) Did you guys build in a nicer way to handle > messages from other applications? > > 2) If not, is there a way to get access to the > mainframe object from a static member function > the mainframe class? > > > Thanks, > > Michael -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 WWW: http://www.rademakers.org/fons/ Fax: +41 22 7679480
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET