22 lines
346 B
C
22 lines
346 B
C
|
|
#define MAX_FN 32
|
||
|
|
|
||
|
|
static void(*atexit_fn[MAX_FN])(void);
|
||
|
|
static int atexit_fn_count = 0;
|
||
|
|
|
||
|
|
int atexit(void(*fn)(void))
|
||
|
|
{
|
||
|
|
if (atexit_fn_count == MAX_FN) {
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
atexit_fn[atexit_fn_count++] = fn;
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
void __crt_run_atexit()
|
||
|
|
{
|
||
|
|
for (int i = 0; i < atexit_fn_count; i++) {
|
||
|
|
atexit_fn[i]();
|
||
|
|
}
|
||
|
|
}
|