Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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