我的代码工作得很好,但是当我退出我的 simpleshell 时,我遇到了分段错误。atexit(final) 的 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");
}