atexit
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  
<stdlib.h>
  | 
||
|   int atexit( void (*func)() ); 
 | 
||
Registers the function pointed to by func to be called on normal program termination (via exit() or returning from main()).
Calling the function from several threads does not induce a data race. The implementation shall support the registration of at least 32 functions.
Contents | 
[edit] Parameters
| func | - | pointer to a function to be called on normal program termination | 
[edit] Return value
0 if the registration succeeds, nonzero value otherwise.
[edit] Exceptions
[edit] Example
Output:
pushed second pushed first
[edit] See also
|    (C99) 
 | 
   registers a function to be called on quick_exit invocation   (function)  |