スポンサーリンク

STRERROR(3) FreeBSD ライブラリ関数マニュアル STRERROR(3)

名称

perror, strerror, strerror_r, sys_errlist, sys_nerr − システムのエラー メッセージ

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <stdio.h>

void

perror(const char *string);

extern const char * const sys_errlist[];

extern const int sys_nerr;

#include <string.h>

char *

strerror(int errnum);

int

strerror_r(int errnum, char * strerrbuf, size_t buflen);

解説

strerror(), strerror_r() および perror() 関数は、エラー番号に対応するエ ラーメッセージ文字列を探し出します。

strerror() 関数は、エラー番号の引数 errnum を受け取って、それに対応する メッセージ文字列へのポインタを返します。

strerror_r() 関数は、同じ結果を最大 buflen 文字数の strerrbuf に直し、成 功した場合は 0 を返します。

perror() 関数は、大域変数 errno (intro(2)) の現在の値に対応するエラーメッ セージを探して、それに改行をつけて標準エラーファイル記述子に書込みます。 引数 string が ヌル以外であり、ヌル文字を指さない場合は、この文字列はメッ セージ文字列の前にコロンとスペース (‘: ’); で区切って追加されます。それ以 外の場合は、エラーメッセージ文字列のみが印字されます。

errnum がエラー番号として認識できない場合は、 strerror() は、 ‘‘Unknown error: ’’ のエラーメッセージ文字列の後に、 10 進数のエラー番号を返し、 errno に EINVAL をセットします。 strerror_r() は、 strerrbuf を変更せずに EINVAL を返します。エラー番号が 0 <= errnum < sys_nerr 内の実装では、認識 できません。

エラー文字列を含む ( buflen で指定されているより) strerrbuf が不十分な領 域の場合、 strerror_r() は ERANGE を返し、 strerrbuf には、 buflen で指定 されたヌル文字で終了する長さの切り捨てたエラーメッセージが入ります。

メッセージ文字列には、外部配列 sys_errlist を使って直接アクセスすることが できます。外部値 sys_nerr には sys_errlist の中にあるメッセージのカウント が入っています。これらの変数を使用することには賛成できません。代わりに、 strerror() または strerror_r() を使った方がよいでしょう。

関連項目

intro(2), psignal(3)

歴史

strerror() および perror() 関数は、 4.4BSD ではじめて登場しました。 strerror_r() 関数は、 Wes Peters ⟨wes@freebsd.org⟩. によって FreeBSD 4.4 で実装されました。

バグ

認識できないエラー番号に対しては、 strerror() 関数はその結果を静的バッ ファに返し、それは以降の呼び出しによって上書きされる可能性があります。

sys_errlist 変数を使用している好ましくないプログラムは、その変数を一貫性 なく宣言するために失敗することがしばしばあります。

FreeBSD 10.0 Nov 26, 2001 FreeBSD 10.0

スポンサーリンク