exit.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /*
stdlib.h [exit]
書式: void exit(int status)
機能: プログラムを正常終了させる
引数: int status: EXIT_SUCCESS(0) を指定すると成功を示し,
EXIT_FAILURE(1) を指定すると処理が失敗したことを示す.
戻り値: なし
*/
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
char *fname = "test.txt";
fpos_t pos;
fp = fopen(fname, "rb");
if(fp == NULL){
printf( "%s ファイルが開けない\n", fname);
exit(1);
}
fseek(fp, 0, SEEK_END);
fgetpos(fp, &pos);
printf("ファイルサイズ: %d\n", (int)pos);
fclose(fp);
return 0;
}
|
exit.c の実行結果は:
[cactus:~/code_c/refer]% ./exit
ファイルサイズ: 17
abort.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /*
stdlib.h [abort]
書式: void abort(void)
機能: プログラムの異常終了
引数: なし
戻り値: なし
*/
/*
none.txt ファイルがない状態で, ファイルオープン
が失敗した際に, abort() でプログラムを終了させ
ている.
*/
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
char *fname = "none.txt";
fpos_t pos;
fp = fopen(fname, "rb");
if(fp == NULL){
printf( "%s ファイルが開けない\n", fname);
abort();
}
fseek(fp, 0, SEEK_END);
fgetpos(fp, &pos);
printf("ファイルサイズ: %d\n", (int)pos);
fclose(fp);
return 0;
}
|
abort.c の実行結果は:
[cactus:~/code_c/refer]% ./abort
none.txt ファイルが開けない
Abort
atexit.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /*
stdlib.h [atexit]
書式: int atexit( void(*func)(void) )
機能: プログラムの終了時に呼ばれる関数を登録する
引数: void(*func)(void): 登録する関数ポインタ
戻り値: 成功すると 0 を返し,
失敗すると 0 以外を返す.
*/
/*
func1, func2, func3 と登録したので,
逆順で終了時に呼ばれるわけ.
*/
#include <stdio.h>
#include <stdlib.h>
void func1(void);
void func2(void);
void func3(void);
int main(void){
atexit(func1);
atexit(func2);
atexit(func3);
printf("Enterキーを押すとプログラムを終了する\n");
getchar();
return 0;
}
void func1(void){
printf("終了中...func1\n");
}
void func2(void){
printf("終了中...func2\n");
}
void func3(void){
printf("終了中...func3\n");
}
|
atexit.c の実行結果は:
[cactus:~/code_c/refer]% ./atexit
Enterキーを押すとプログラムを終了する
終了中...func3
終了中...func2
終了中...func1