エラー
errno.h は C 言語の標準ライブラリのヘッダーファイルです。
ここではエラーレポートのためのマクロが、定義されていて errno という名前でそれを取得することができるようになっています。
errno はプログラムのスタートアップ時に 0 がセットされて、ライブラリ関数はその値をいつでも変える可能性があります。 極端な話、エラーが起きようが起きまいが、いつでも変更することがあります。
たいていの場合、エラーが起きた場合は戻り値を NULL としますが、 いくつかの関数では errno をゼロにしたりします。
関数を使うときは、呼び出し側はどういう条件でエラーを捕まえるか、ちゃんと確認しないといけないわけです。
さて、ではさっそく、動作確認をしてみましょう。
次の例では、fopen 関数で存在しないファイル a.html を開こうとします。 そのタイミングで errno がどのようになるかみてみましょう。
#include <stdio.h>
#include <errno.h>
int main() {
FILE *fp = fopen("a.html", "r");
printf("errno = %d\n", errno);
if (fp) {
fclose(fp);
}
return 0;
}
この実行結果は次のようになりました。
errno = 2
errno.h 内で 2 と定義されているのは ENOENT です。
ENOENT の意味は "No such file or directory." という意味です。実際にここで試した例でも、指定した名前のファイルがないから、ファイルがないという意味のエラーコードになっているということで合ってますね。
ちなみに、エラーの意味は Open Group などの情報を参照してください。