void myHandler(void) {
   cout << "\t\t*******************" << endl;
   cout << "\t\tIn the exit handler" << endl;
   cout << "\t\t*******************" << endl;
}
...
atexit(myHandler);
	#!/usr/bin/bash
for var in list of var; do
    code to execute.
done
		     
for type in --exit --exit_ --return --abort --fall; do
        echo
        echo "running myExit with " $type
        echo
        myExit $type
        echo "Exit Code: " $?
        echo
        echo
        read -p "Press enter to continue: " junk
done
		
void Handler3(int code, void * data) {
    cout << endl;
    cout << "Handler 3 called  status= " << code
         << " data= " << int(data) << endl;
    cout << endl;
    return;
}
...
    on_exit(Handler3, 42);
         
CXXFLAGS =  -g -O3 -Wall -Wextra -Wuninitialized -pedantic -Wshadow -Weffc++ -st
d=c++14
# a special rule for exit2, playing lose and free with casts
exit2: CXXFLAGS =  -g -O3  -std=c++14 -w  -fpermissive
OBJS =  mySleep  myNanoSleep fork zombie orphan forkBomb myExit exit2
all: ${OBJS}