atexit()

Register functions to be called during normal program termination

Synopsis:

#include <stdlib.h>

int atexit( register void (*func)(void) );

Arguments:

func
A pointer to the function you want to be called when the program terminates normally. This function has no arguments and doesn't return a value; its prototype should be:
void func( void );
  

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The atexit() function registers a function to be called when the program terminates normally. If you register more than one function with atexit(), they're executed in a “last-in, first-out” order. Normal termination occurs either by a call to exit() or a return from main().

You can register a total of 32 functions with atexit().


Note: The functions registered with atexit() aren't called when the program terminates with a call to _exit().

Returns:

0 for success, or nonzero if an error occurs.

Examples:

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

void func1( void )
{
    printf( "last.\n" );
}

void func2( void )
{
    printf( "this " );
}

void func3( void )
{
    printf( "Do " );
}

int main( void )
{
    atexit( func1 );
    atexit( func2 );
    atexit( func3 );

    printf( "Do this first.\n" );

    return EXIT_SUCCESS;
}

produces the output:

Do this first.
Do this last.

Classification:

ANSI, POSIX 1003.1

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

See also:

abort(), _exit(), exit()