0

私のコードは問題なく動作しますが、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");
    }
4

1 に答える 1