errno, sys_errlist, sys_nerr - エラーを示すグローバル変数
【書式】
#include <errno.h>
extern int errno;
extern char *sys_errlist[];
extern int sys_nerr;
【解説】
errno はプログラムの実行時にライブラリ関数が検出したエラーを示しま
す。
errno はプログラムの実行を開始した時点で0に初期化されます。0はエラー
がないことを示しています。なんらかのエラーが発生したときにはその種類
にしたがって<errno.h>に定義されているエラー番号がセットされます。 続
いて別のエラーが発生すると errno には新たなエラー番号がセットされま
す。このため、正確にエラーの種類を調べたい場合には、ライブラリ関数を
コールした直後にerrnoを調べるようにしてください。
また、 errno を0に再初期化するライブラリ関数はありません。再初期化は
ユーザが実行して下さい。
sys_errlistはエラーメッセージへのポインタの配列です。errnoを配列のイ
ンデックスとして用いれば、エラー番号に対応するメッセージを得ることが
できます。
しかし、 エラーメッセージの文字列を求めるライブラリ関数として
strerror(3)が用意されています。strerror(3)はANSIで定義されている標準
関数ですから移植性の点からもstrerror(3) を利用するほうが望ましいと考
えられます。
sys_nerrは定義されているエラーが何種類あるかを示しています。
errnoが表すエラー番号には以下のものがあります。
E2BIG
パラメタが長すぎる
EACCES
アクセスの否定 (ディスクが一杯、リードオンリーファイルへの書き込
みetc.)
EBADF
無効なファイル番号
EDOM
パラメタが定義域にない
EEXIST
すでにファイルが存在する
EINVAL
パラメタが無効
EMFILE
オープンされているファイルが多すぎる
ENODEV
デバイス名が無効
ENOENT
パス名が無効
ENOEXEC
不正なフォーマット
ENOMEM
メモリが足りない
ERANGE
結果が範囲を越えた
EXDEV
同一デバイスではない
【可搬性】
errno
ANSI, UNIX, DOS窓
sys_errlist
UNIX, DOS窓
sys_nerr
UNIX, DOS窓
【参照】
strerror(3)
【copyright (c) 安江正樹@東海大学理学部物理学科】