Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       strerror, strerror_r - エラー番号を説明する文字列を返す。

書式

       #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 */

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       次の場合には XSI 準拠のバージョンの strerror_r()  が提供される:
       (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE
       それ以外の場合、GNU バージョンが提供される。

説明

       strerror()  関数は、引き数 errnum で渡されたエラーコードについての 説明が入った文字列へのポインタを返す。
       可能であるならば、適切な言語を選 択するために、 現在のロケールの LC_MESSAGES を使う。(例えば、 errnumEINVAL の場合、説明として"Invalid argument" が返され る。) この文字列は、アプリケーションで変更してはなら
       ないが、  これ以降に 行われる strerror() の呼び出しで 変更されても構わない。この文字列を 変更するライブラ
       リ関数はない (perror(3) も含まれる)。

       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()  と strerror_r()  はエラー内容を説明する 文字列を返す。エラー番号が未知の場合は "Unknown error
       nnn" という メッセージを返す。

       POSIX.1-2001  と POSIX.1-2008 では、 strerror() が成功した場合は errno を変更せずに元のままにしなければな
       らないとされている。関数のど の返り値もエラーを示すために予約されていないので、エラーをチェックした  いア
       プリケーションは呼び出しを行う前に  errno を 0 に初期化し、呼び出 しの後で errno をチェックすべき点に注意
       すること。

       XSI 準拠の strerror_r() 関数は成功すると 0 を返す。エラーの場合には、 (glibc 2.13 以降では) (正の) エラー
       番号が返され、(バージョン 2.13 より前 の glibc では) -1 が返され、 errno にエラーを示す値がセットされる。

エラー

       EINVAL errnum の値が有効なエラー番号ではない。

       ERANGE エラーコードを説明する文字列のために、充分な領域が確保できなかった。

属性

   マルチスレッディング (pthreads(7) 参照)
       strerror() 関数はスレッドセーフではない。

       strerror_r() 関数はスレッドセーフである。

準拠

       strerror()  は POSIX.1-2001, C89, C99 で規定されている。 strerror_r()  は POSIX.1-2001 で規定されている。

       GNU 仕様の strerror_r()  関数は非標準の拡張である。

       POSIX.1-2001 は、 strerror() がエラーに遭遇した場合に errno をセッ トすることを認めているが、エラー発生時
       に関数の結果として  どんな値を返す  べきかを規定してない。  あるシステムでは、   エラー番号が未知の場合、
       strerror()  は  NULL  を返す。  他のシステムでは、  エラー番号が未知の場  合、  strerror()  は "Error nnn
       occurred" といった文字列を返し、 errnoEINVAL をセットする。 C99 と POSIX.1-2008  では、返り値が  NULL
       以外になることが求められている。

関連項目

       err(3), errno(3), error(3), perror(3), strsignal(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

                                                   2013-06-21                                        STRERROR(3)