【C言語】プログラムを終了するexit関数の使い方を解説

C言語では、プログラムの途中であってもexit関数を呼び出すことで終了させることができます。

しかし、初心者の方にとってはその使い方がわかりづらいこともあります。

そこで本記事では、exit関数の基本的な使い方から、引数や戻り値の扱い方まで詳しく解説していきます。

目次

exit関数とは

exit()関数は、C言語でプログラムを終了するために使用される関数です

この関数を呼び出すと、プログラムは即座に終了します。

本来であれば、C言語のプログラムはmain関数でreturn文が呼ばれるまで続行されますが、exit関数を使用することでmain関数のreturn文に到達する前に終了可能です。

exit関数の使い方

exit()関数は、標準ライブラリ <stdlib.h> をインクルードすると使用できます。以下は、基本的な exit() 関数の使い方です。

#include <stdlib.h>

int main() {
    // プログラムの処理
    // ...

    // プログラムを正常終了する場合
    exit(0);

    // プログラムを異常終了する場合
    exit(1);
}

exit() 関数に渡す引数は、プログラムが正常終了した場合には 0 を指定し、異常終了した場合には 0 以外の値を指定するのが一般的です。

異常終了時には、事前に定義しておいたエラーコードを設定することが多いです。

exit関数のポイント

  • exit() 関数が呼び出されると、その時点で実行中のプロセスが即座に停止します。
  • exit() 関数が呼び出される前に確保したメモリやファイルハンドルなどのリソースは自動的に解放されます。
  • atexit() 関数を使用することで、exit関数を使ってプログラムが終了する直前に実行する関数を登録することができます。
  • exit() 関数を複数回呼び出すことはできません(それ以降のプログラムは実行されない為)。

exit関数の使い方

exit関数には、引数として整数値を渡すことができます。

この整数値は、プログラムの終了ステータスを表します。通常、0以外の値を返すことで、エラーが発生したことを示します。

例えば、以下のようなコードでは、ファイルが開けなかった場合に1を返し、正常に処理された場合には0を返します。

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp;
    fp = fopen("sample.txt", "r");
    if (fp == NULL) {
        printf("Error: cannot open file.\n");
        exit(1);
    }
    // ファイル処理
    fclose(fp);
    return 0;
}

戻り値について

exit関数自体は戻り値を持ちません。

実行されるとプログラムが直ちに終了するため、戻り値を持つ意味がないからです。

以上がexit関数の使い方です。エラー処理などで活用してみてください。

exit関数の注意点

プログラムを終了する際には、exit()関数を使用することができます。しかし、その使い方には注意が必要です。

プログラムの終了方法について

exit()関数を呼び出すと、プログラムは直ちに終了します。

プログラムが現在実行中の処理を中断し、すべてのリソース(メモリやファイルなど)を解放します(free関数が呼ばれていない動的確保されたメモリも開放されます)。

ただし、exit関数によるこのような突然の終了は、予期せぬエラーが発生した場合以外では好ましくありません。

例えば、マルチスレッドでファイルに書き込みを行っている最中にプログラムが強制的に終了された場合、書き込み途中のデータが失われる可能性があります。

また、ネットワーク接続中にプログラムが終了した場合、接続先サーバー側で不正なセッションとして扱われる可能性もあります。

プログラムの安全性について

exit()関数は強制的なプログラムの終了を行うため、安全性上問題がある場合もあります。

例えば、重要な処理を行っている最中にexit()関数が呼び出された場合、その処理は途中で打ち切られてしまい、重大な不具合が生じる可能性があります。

なので、プログラムを正常終了させる場合は、基本的にexit関数を使うべきではありません。

終わりに

以上が、C言語のexit関数についての解説でした。

exit関数はプログラムを終了するために非常に便利な関数ですが、使い方や注意点を理解しておくことが重要です。初心者の方でもわかりやすく解説できるよう、サンプルコードも交えて説明しました。

ぜひこの記事を参考にして、C言語プログラミングのスキルアップに役立ててください。

目次