##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# atexit

From cppreference.com
< c‎ | program

Defined in header `<stdlib.h>` |  |
int atexit( void (*func)() ); |  |

Registers the function pointed to by `func` to be called on normal program termination (via std::exit() or returning from `main()`). The functions will be called in reverse order they were registered, i.e. the function registered last will be executed first.

The same function may be registered more than once.

`atexit` is thread-safe: calling the function from several threads does not induce a data race.

The implementation is guaranteed to support the registration of at least 32 functions. The exact limit is implementation-defined.

### [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] Example

Run this code

    #include <stdlib.h>
    #include <stdio.h>

    void f1()
    {
        puts("pushed first");
    }

    void f2()
    {
        puts("pushed second");
    }

    int main(void)
    {
        atexit(f1);
        atexit(f2);
    }

Output:

    pushed second
    pushed first

### [edit] See also

at_quick_exit (C99) | registers a function to be called on `quick_exit` invocation (function) [edit]
C++ documentation for atexit

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/program/atexit&oldid=69749"