这个程序注册了一个函数调用exit()
。atexit()
#include <stdio.h>
#include <stdlib.h>
void machiavellian() {
puts("At exit");
exit(0);
}
int main(void) {
atexit(machiavellian);
exit(0);
}
从man atexit
这些回调不能调用 exit()
我正在等待一个无限循环,但它只调用一次machiavellian()
。发生什么了?
$ make you_cant_exit_me
cc you_cant_exit_me.c -o you_cant_exit_me
$ ./you_cant_exit_me
At exit
$ echo $?
0