C言語/標準ライブラリ/errno.h

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

ヘッダーerrno.hでは、errnoと呼ばれる静的な場所に格納されるエラーコードによってエラー状態を報告するマクロを定義しています[1]

特定のライブラリ関数がエラーを検出すると、errnoに値が格納されます。プログラム起動時に格納される値はゼロです。 ライブラリ関数は、ゼロより大きい値のみを格納します。 どのライブラリ関数も、エラーを検出したかどうかにかかわらず、戻り値を返す前に格納された値を変更することができます。 ほとんどの関数は、エラーを検出したことを示す特別な値を返します。 一般的に、ポインタを返す関数はNULL、整数を返す関数は-1です。 関数の中には、エラーが検出されたかどうかを後でテストするために、呼び出し側がerrnoを0に設定することを要求するものもあります。

errnoマクロは、int型のl値に展開され、 errno機能を使用する関数で生成された最後のエラーコードを含みます。 旧来、これは静的なメモリ位置でしたが、今日ではマルチスレッドを可能にするために、ほとんどの場合マクロが使用され、各スレッドは独自のエラー番号を見ることになります。

また、ヘッダーファイルには、エラーコードを表す整数定数に展開するマクロが定義されています。C規格では3つしか定義されていません。

EDOM
ERANGE
EILSEQ

Eと数字、またはEと大文字で始まる追加のマクロ定義も、実装によって指定できます。

UNIXやLinuxのようなPOSIX準拠のオペレーティングシステムには、他にも多くのエラー値が含まれており、その多くは上記のエラー値よりもはるかに頻繁に使用されています。例えば、ファイルを読み取るために開くことができない場合のEACCESなどです。

脚註[編集]

  1. ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 205, §7.5 Errors. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf.