ref: 5ac3a0d4c1a9d7e4d3912c4770084b885007aca6
dir: /src/libc/stdlib/atexit.c/
#include <stdlib.h> #include <errno.h> #include "../libc.h" #undef atexit static void (*funs[_ATEXIT_MAX])(void); static unsigned nfuns; static void callhdls(void) { while (nfuns > 0) (*funs[--nfuns])(); } int atexit(void (*fun)(void)) { if (nfuns == _ATEXIT_MAX) { errno = ENOMEM; return -1; } funs[nfuns++] = fun; _atexithdl = callhdls; return 0; }