1 #ifndef exittrap_h 2 #define exittrap_h 3 4 static const char exittrap_h_rcsid[]="$Id: exittrap.h,v 1.1 1998/04/17 00:08:53 mrsam Exp $"; 5 6 ////////////////////////////////////////////////////////////////////////// 7 // 8 // ExitTrap implements exit traps - cleanup functions that must be called 9 // in case of an abnormal program termination. 10 // 11 // This class does NOT do anything like trap signals, etcetera. The main 12 // program should do that, and call onexit() in order to call the cleanup() 13 // virtual function. 14 // 15 ////////////////////////////////////////////////////////////////////////// 16 17 class ExitTrap { 18 19 ExitTrap *next, *prev; 20 virtual void cleanup()=0; 21 virtual void forked()=0; 22 int callcleanup; 23 protected: destroying()24 void destroying() { callcleanup=0; } constructed()25 void constructed() { callcleanup=1; } 26 public: 27 ExitTrap(); 28 virtual ~ExitTrap(); 29 30 static void onexit(); 31 static void onfork(); 32 } ; 33 #endif 34