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) 安江正樹@東海大学理学部物理学科】