gpt4 book ai didi

c++ - 关于atexit的三个问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:54 25 4
gpt4 key购买 nike

返回值:

   The atexit() function returns the value 0 if successful; otherwise, it returns a nonzero value.

示例:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void
bye(void)
{
printf("That was all, folks\n");
}

int
main(void)
{
long a;
int i;

a = sysconf(_SC_ATEXIT_MAX);
printf("ATEXIT_MAX = %ld\n", a);

i = atexit(bye);
if (i != 0) {
fprintf(stderr, "cannot set exit function\n");
exit(EXIT_FAILURE);
}

exit(EXIT_SUCCESS);
}

我已阅读手册页和 StackOverflow 问题,但仍然有关于 atexit 的三个问题:

  1. 什么时候 atexit 会失败,所以它会返回非零值?请给我这样的演示,谢谢!
  2. 正如我们所知,bye 在调用 exit() 之前不会被调用。那么这是否意味着在调用 exit() 之前我们无法知道 atexit 的返回值?如果是,那么第三个问题:
  3. 既然已经调用了 exit(),那么如何执行 if 表达式?

最佳答案

as we know, bye will not be called until exit() is called. So does it mean we can not know atexit's return value until exit() is called?

我不确定我是否能完全理解你的想法,但误解似乎只是以下几点:

atexit() 报告成功仅仅意味着“我接受了你给我的任何指针,它指向的函数将在退出时调用”。这并不意味着对您的函数的实际调用 会成功。

因此,

atexit() 报告错误意味着:“无论出于何种原因,我都无法接受您的指示”。您的运行时环境可能内存不足,无法存储另一个指针或类似的东西。

关于c++ - 关于atexit的三个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817805/

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