gpt4 book ai didi

c - 为了防止段错误,atexit() 函数应该放在哪里?

转载 作者:行者123 更新时间:2023-11-30 17:43:13 37 4
gpt4 key购买 nike

我的代码工作得很好,但是当我退出 simpleshell 时,我遇到了段错误。 atexit(final) 的决赛仍然被调用并且正常工作。我认为问题出在 atexit() 上,因为当从代码中删除 atexit() 时,我可以正确“退出”(即 CNTRL+D)simpleshell。然而,重申一下,一旦 atexit() 出现在我的代码中(请参阅下文了解它在哪里),当我退出时(即使“final”执行),它会导致段错误。

static void final(void) {
flag = 0;
assign6 = fopen(".logfile.txt", "a");
assign62 = fopen(".temp_logger.txt", "r");
while(fgets(test2, sizeof(test2), assign62))
{
fprintf(assign6, test2);
}
fclose(assign6);
fclose(assign62);
remove(".temp_logger.txt");
}

最佳答案

您没有检查 allocate62 文件指针是否正确 fopen,看起来您正在删除它:

static void final(void) {
flag = 0;
assign6 = fopen(".logfile.txt", "a");
assign62 = fopen(".temp_logger.txt", "r");
if (assign6 && assign62) {
while(fgets(test2, sizeof(test2), assign62))
{
fprintf(assign6, test2);
}
fclose(assign6);
fclose(assign62);
remove(".temp_logger.txt");
}
}

关于c - 为了防止段错误,atexit() 函数应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20278091/

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