Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all 

名前
strerror, strerror_r, strerror_l - エラー番号を説明する文字列を返す。
書式
#include <string.h> char *strerror(int errnum); int strerror_r(int errnum, char *buf, size_t buflen); /* XSI-compliant */ char *strerror_r(int errnum, char *buf, size_t buflen); /* GNU-specific */ char *strerror_l(int errnum, locale_t locale); glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照): strerror_r(): 次の場合には XSI 準拠のバージョンが提供される: (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE それ以外の場合、GNU バージョンが提供される。
説明
strerror() 関数は、引き数 errnum で渡されたエラーコードについての説明が入った文字列へのポインターを返す。 可能であるならば、適切な言語を選択するために、 現在のロケールの LC_MESSAGES を使う。(例えば、 errnum が EINVAL の場合、説明として "Invalid argument" が返される。) この文字列は、アプリケーションで変更してはなら ないが、 これ以降に行われる strerror() や strerror_l() の呼び出しで変更されても構わない。 perror(3) など の、これ以外のライブラリ関数ではこの文字列は変更されない。 strerror_r() strerror_r() 関数は strerror() と似ているが、スレッドセーフである。 この関数には二種類のバージョンが存在 し、 POSIX.1-2001 で規定された XSI 準拠のバージョン (glibc 2.3.4 以降で利用可能だが、glibc 2.13 までは POSIX 準拠ではない) と、 GNU 仕様のバージョン (glibc 2.0 以降で利用可能) である。 「書式」の節に記載され た機能検査マクロの場合には、 XSI 準拠の バージョンが提供される。それ以外の場合には GNU 仕様のバージョンが 提供さ れる。機能検査マクロが一つも明示的に定義されない場合、 (glibc 2.4 以降 では) デフォルトで _POSIX_SOURCE は値 200112l で定義され、その結果 XSI 準拠のバージョンの strerror_r() がデフォルトで提供さ れる。 移植性が必要なアプリケーションでは、 XSI 準拠の strerror_r() を使う方がよい。 この関数は、ユーザーから提 供される長さ buflen のバッファー buf にエラー文字列を返す。 GNU 仕様の strerror_r() は、 エラーメッセージを格納した文字列へのポインターを返す。 返り値は、 この関数が buf に格納した文字列へのポインターか、 何らかの (不変な) 静的な文字列へのポインター、 のいずれかとなる (後者の場合は buf は使用されない)。 buf に文字列が格納される場合は、 最大で buflen バイトが格納される (buflen が小さ過ぎたときには文字列は切り詰められ、 errnum は不定である)。 文字列には必ず終端ヌル文字 ('\0') が含まれる。 strerror_l() strerror_l() は strerror() と同様だが、 errnum を locale で指定されたロケールのロケール依存のエラーメッ セージにマッピングする。 locale が特別なロケールオブジェクト LC_GLOBAL_LOCALE の場合、もしくは locale が 有効なロケールオブジェクトハンドルでない場合は、 strerror_l() の動作は未定義である。
返り値
関数 strerror(), strerror_l() と GNU 固有の関数 strerror_r() はエラー内容を説明する文字列を返す。 エラー 番号が未知の場合は "Unknown error nnn" という メッセージを返す。 XSI 準拠の strerror_r() 関数は成功すると 0 を返す。エラーの場合には、 (glibc 2.13 以降では) (正の) エラー 番号が返され、(バージョン 2.13 より前 の glibc では) -1 が返され、 errno にエラーを示す値がセットされる。 POSIX.1-2001 と POSIX.1-2008 では、 strerror() や strerror_l() が成功した場合は errno を変更せずに元のま まにしなければならないとされている。関数のどの返り値もエラーを示すために予約されていないので、エラーを チェックしたいアプリケーションは呼び出しを行う前に errno を 0 に初期化し、呼び出しの後で errno をチェック すべき点に注意すること。
エラー
EINVAL errnum の値が有効なエラー番号ではない。 ERANGE エラーコードを説明する文字列のために、充分な領域が確保できなかった。
属性
マルチスレッディング (pthreads(7) 参照) strerror() 関数はスレッドセーフではない。 strerror_r() 関数はスレッドセーフである。
バージョン
strerror_l() 関数は glibc 2.6 で初めて登場した。
準拠
strerror() は POSIX.1-2001, POSIX.1-2008, C89, C99 で規定されている。 strerror_r() は POSIX.1-2001 と POSIX.1-2008 で規定されている。 strerror_l() は POSIX.1-2008 で規定されている。 GNU 仕様の strerror_r() 関数は非標準の拡張である。 POSIX.1-2001 は、 strerror() がエラーに遭遇した場合に errno をセッ トすることを認めているが、エラー発生時 に関数の結果として どんな値を返す べきかを規定してない。 あるシステムでは、 エラー番号が未知の場合、 strerror() は NULL を返す。 他のシステムでは、 エラー番号が未知の場 合、 strerror() は "Error nnn occurred" といった文字列を返し、 errno に EINVAL をセットする。 C99 と POSIX.1-2008 では、返り値が NULL 以外になることが求められている。
関連項目
err(3), errno(3), error(3), perror(3), strsignal(3), locale(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告 に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。 2014-03-18 STRERROR(3)