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)