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