atexit

Belirtilen işlevi çıkışta işler.

Sözdizimi

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

Parametreler

func
Çağrılacak işlev.

Dönüş değeri

atexit başarılı olursa 0 veya hata oluşursa sıfır olmayan bir değer döndürür.

Açıklamalar

İşlev, atexit program normal şekilde sonlandırıldığında çağrılacak işlevin func adresini alır. Last-in, first-out (LIFO) sırasına göre yürütülen işlevlerin bir kaydını oluşturmak için atexit ardışık çağrılar. öğesine atexit geçirilen işlevler parametre alamıyor. atexit ve _onexit işlevlerin kaydını tutmak için yığını kullanın. Bu nedenle, kaydedebileceğiniz işlevlerin sayısı yalnızca yığın belleğiyle sınırlıdır.

İşlevdeki atexit kod, işlev çağrıldığında atexit zaten kaldırılmış olabilecek herhangi bir DLL'ye bağımlılık içermemelidir.

Microsoft özgü DLL davranışı: DLL kaldırıldığında, aldıktan DLL_PROCESS_DETACHsonra DllMain DLL'nin atexit geri çağırmaları ters kayıt sırasında çalışır ve son geri çağırma ilk olarak çalışır.

ANSI uyumlu bir uygulama oluşturmak için ANSI standart atexit işlevini (benzer _onexit işlev yerine) kullanın.

Gereksinimler

Yordam Gerekli başlık
atexit <stdlib.h>

Örnek

Bu program, çağrıldığında atexit yürütülmek üzere işlev yığınına dört işlev iter. Programdan çıkıldığında, bu işlevleri son ve ilk çıkış sırasında yürütür.

// crt_atexit.c
#include <stdlib.h>
#include <stdio.h>

void fn1( void ), fn2( void ), fn3( void ), fn4( void );

int main( void )
{
   atexit( fn1 );
   atexit( fn2 );
   atexit( fn3 );
   atexit( fn4 );
   printf( "This is executed first.\n" );
}

void fn1()
{
   printf( "next.\n" );
}

void fn2()
{
   printf( "executed " );
}

void fn3()
{
   printf( "is " );
}

void fn4()
{
   printf( "This " );
}
This is executed first.
This is executed next.

Ayrıca bkz.

İşlem ve ortam denetimi
abort
exit, _Exit, _exit
_onexit, _onexit_m