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 atexit ini diteruskan alamat fungsi func yang akan 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 didaftarkan hanya dibatasi oleh memori timbunan.

Kode dalam atexit fungsi tidak boleh berisi dependensi apa pun pada DLL apa pun yang bisa saja telah dibongkar saat fungsi dipanggil atexit .

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 yang akan dijalankan ketika atexit dipanggil. Ketika program keluar, program ini dijalankan pada dasar 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.

Baca juga

Kontrol proses dan lingkungan
abort
exit, _Exit, _exit
_onexit, _onexit_m