Namespaces
Variants

exit

From cppreference.net
定義先ヘッダ <stdlib.h>
void exit ( int exit_code ) ;
(C11まで)
_Noreturn void exit ( int exit_code ) ;
(C11から)
(C23まで)
[ [ noreturn ] ] void exit ( int exit_code ) ;
(C23から)

通常のプログラム終了を引き起こします。

いくつかのクリーンアップ手順が実行されます:

  • atexit に渡された関数は、登録の逆順で呼び出される
  • すべてのCストリームはフラッシュされ閉じられる
  • tmpfile によって作成されたファイルは削除される
  • 制御がホスト環境に返される。 exit_code がゼロまたは EXIT_SUCCESS の場合、正常終了を示す実装定義のステータスが返される。 exit_code EXIT_FAILURE の場合、異常終了を示す実装定義のステータスが返される。それ以外の場合、実装定義のステータス値が返される。

目次

注記

at_quick_exit で登録された関数は呼び出されません。

プログラムが exit を複数回呼び出す場合、または exit quick_exit の両方を呼び出す場合、動作は未定義です。

atexit で登録された関数の呼び出し中に、その関数が longjmp で終了した場合、動作は未定義です。

main関数 からの戻りは、 return 文によるものか、関数の終端に到達することによるものであれ、 exit() を実行し、return文の引数(または暗黙的な戻りが使用された場合は 0 )を exit_code として渡します。

パラメータ

exit_code - プログラムの終了ステータス

戻り値

(なし)

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE *fp = fopen("data.txt","r");
    if (fp == NULL)
    {
       fprintf(stderr, "error opening file data.txt in function main()\n");
       exit( EXIT_FAILURE );
    }
    fclose(fp);
    printf("Normal Return\n");
    return EXIT_SUCCESS ;
}

出力例:

error opening file data.txt in function main()

参考文献

  • C17規格 (ISO/IEC 9899:2018):
  • 7.22.4.4 exit関数 (p: 256)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.22.4.4 exit関数 (p: 351-352)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.20.4.3 exit関数 (p: 315-316)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.10.4.3 exit関数

関連項目

異常なプログラム終了を引き起こす(クリーンアップなし)
(関数)
exit() 呼び出し時に実行される関数を登録する
(関数)
完全なクリーンアップなしで正常なプログラム終了を引き起こす
(関数)