C言語/標準ライブラリ/errno.h
表示
(C言語/標準ライブラリ/エラー から転送)
ヘッダーerrno.h
では、errno
と呼ばれる静的な場所に格納されるエラーコードによってエラー状態を報告するマクロを定義しています[1]。
特定のライブラリ関数がエラーを検出すると、errno
に値が格納されます。プログラム起動時に格納される値はゼロです。
ライブラリ関数は、ゼロより大きい値のみを格納します。
どのライブラリ関数も、エラーを検出したかどうかにかかわらず、戻り値を返す前に格納された値を変更することができます。
ほとんどの関数は、エラーを検出したことを示す特別な値を返します。
一般的に、ポインタを返す関数はNULL、整数を返す関数は-1です。
関数の中には、エラーが検出されたかどうかを後でテストするために、呼び出し側がerrno
を0に設定することを要求するものもあります。
errno
マクロは、int
型のl値に展開され、 errno機能を使用する関数で生成された最後のエラーコードを含みます。
旧来、これは静的なメモリ位置でしたが、今日ではマルチスレッドを可能にするために、ほとんどの場合マクロが使用され、各スレッドは独自のエラー番号を見ることになります。
また、ヘッダーには、エラーコードを表す整数定数に展開するマクロが定義されています。C規格では3つしか定義されていません。
- EDOM
- ERANGE
- EILSEQ
Eと数字、またはEと大文字で始まる追加のマクロ定義も、実装によって指定できます。
UNIXやLinuxのようなPOSIX準拠のオペレーティングシステムには、他にも多くのエラー値が含まれており、その多くは上記のエラー値よりもはるかに頻繁に使用されています。例えば、ファイルを読み取るために開くことができない場合のEACCESなどです。
脚註
[編集]- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 205, §7.5 Errors .