私のコードは問題なく動作しますが、simpleshell を終了するとセグメンテーション エラーが発生します。atexit(final) の final は引き続き呼び出され、適切に動作します。問題は atexit() にあると思います。コードから atexit() を削除すると、シンプルシェルを適切に「終了」(つまり、CNTRL+D) できるからです。ただし、もう一度言いますと、 atexit() がコード内にあると (それがどこにあるかは以下を参照してください)、終了すると (「最終」が実行されても) セグメンテーション違反が発生します。
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");
}