atexit

Memproses fungsi yang ditentukan saat keluar.

Sintaks

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

Parameter

func
Fungsi yang akan dipanggil.

Nilai hasil

atexit mengembalikan 0 jika berhasil, atau nilai bukan nol jika terjadi kesalahan.

Keterangan

Fungsi ini atexit mendapatkan alamat fungsi func untuk dipanggil ketika program berakhir secara normal. Panggilan berturut-turut untuk atexit membuat daftar fungsi yang dijalankan dalam urutan last-in, first-out (LIFO). Fungsi yang diteruskan ke atexit tidak dapat mengambil parameter. atexit dan _onexit gunakan timbunan untuk memegang register fungsi. Dengan demikian, jumlah fungsi yang dapat Anda daftarkan hanya dibatasi oleh memori timbunan.

Kode dalam atexit fungsi tidak boleh berisi dependensi apa pun pada DLL apa pun yang sudah dapat dibongkar saat atexit fungsi dipanggil.

perilaku DLL khusus Microsoft: Saat DLL dibongkar, setelah DllMain menerima DLL_PROCESS_DETACH, panggilan balik DLL atexit berjalan dalam urutan pendaftaran terbalik, dengan panggilan balik terakhir yang terdaftar berjalan terlebih dahulu.

Untuk menghasilkan aplikasi yang sesuai dengan ANSI, gunakan fungsi standar atexit ANSI (bukan fungsi serupa _onexit ).

Persyaratan

Rutin Header yang diperlukan
atexit <stdlib.h>

Contoh

Program ini mendorong empat fungsi ke tumpukan fungsi untuk dijalankan ketika atexit dipanggil. Ketika program keluar, program menjalankan fungsi-fungsi ini dalam urutan terakhir masuk, pertama keluar.

// 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.

Lihat juga

Kontrol proses dan lingkungan
abort
exit, , _Exit_exit
_onexit, _onexit_m