ホームC言語Tips集関数 ≫ プログラム正常終了時に関数を呼び出す

C言語Tips集 - プログラム正常終了時に関数を呼び出す

C言語でプログラム正常終了時に関数 (subroutine) を呼び出すには,stdlib.hatexit 関数を使用して,事前に関数を登録しておく必要があります.

atexit

#include <stdlib.h>
int atexit(
    void (*func)(void)
);

atexit 関数は,func が指す関数をプログラムの正常終了時に呼び出される関数として登録する関数です.

atexit 関数は,関数の登録に成功した場合は 0 を,登録に失敗した場合は 0 以外を返します.

C言語サンプルプログラム

以下にatexit 関数を使用して関数を登録しておくことで,正常終了時に登録された関数を呼び出すサンプルプログラムを示します.

/* header files */
#include <stdio.h>
#include <stdlib.h>

/* functions */
void ShowGoodBye01(void); /* 関数1 */
void ShowGoodBye02(void); /* 関数2 */

/* main */
int main(void) {
    /* 関数を登録 */
    atexit(ShowGoodBye01); /* 関数1を登録 */
    atexit(ShowGoodBye02); /* 関数2を登録 */

    /* 正常終了 */
    exit(EXIT_SUCCESS);
}

/* 関数1 */
void ShowGoodBye01(void) {
    printf("Good bye 01\n");
    fflush(stdout);
}

/* 関数2 */
void ShowGoodBye02(void) {
    printf("Good bye 02\n");
    fflush(stdout);
}

実行例

サンプルプログラムの実行結果は以下のようになります.

Good bye 02
Good bye 01