我的代碼工作得很好,但是當我退出我的simpleshell時,出現了分段錯誤。 atexit(final)的最後仍然被調用並正常工作。我認爲問題在於atexit(),因爲當從代碼中刪除atexit()時,我可以正確「退出」(即CNTRL + D)simpleshell。但是,重申,一旦atexit()在我的代碼中(請參閱下面的代碼),它在退出時會導致分段錯誤(即使執行「final」)。atexit()函數應該在哪裏去以防止seg故障?
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");
}
情逆三世緣檢查所有相關係統調用的結局! – alk