gpt4 book ai didi

c - 如果在 atexit 处理程序中发生退出会怎样?

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:22 24 4
gpt4 key购买 nike

我知道 atexit 用于注册函数处理程序。然后,当代码中出现退出时,将调用该函数。但是,如果函数处理程序内部发生退出怎么办?

我期待一个无限循环,但实际上程序正常退出。为什么?

void handler(){
printf("exit\n");
exit(1);
}

int maint(int argc, char *argv[]) {
atexit(handler);
exit(1);
}

最佳答案

行为未定义。

7.22.4.4 The exit function

2 The exit function causes normal program termination to occur. No functions registered by the at_quick_exit function are called. If a program calls the exit function more than once, or calls the quick_exit function in addition to the exit function, the behavior is undefined.

at_exit 处理程序(在正常的退出处理期间运行)中调用 exit 绝对是第二次调用 exit。

正常退出是一种可能的行为,但鉴于任何事情都可能发生(行为的性质未定义),它很可能会导致灾难。最好不要这样做。

关于c - 如果在 atexit 处理程序中发生退出会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com