oracular (3) strerror.3.gz

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

名前

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

書式

       #include <string.h>

       char *strerror(int errnum);
       const char *strerrorname_np(int errnum);
       const char *strerrordesc_np(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)  参照):

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

説明

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

       Like  strerror(),  the strerrordesc_np()  function returns a pointer to a string that describes the error
       code passed in the argument errnum, with the difference  that  the  returned  string  is  not  translated
       according to the current locale.

       The  strerrorname_np()   function  returns  a  pointer  to a string containing the name of the error code
       passed in the argument errnum.  For example, given EPERM as an argument, this function returns a  pointer
       to the string "EPERM".

   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_C_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() と同様だが、 errnumlocale  で指定されたロケールのロケール依存のエラーメッ
       セージにマッピングする。  locale が特別なロケールオブジェクト LC_GLOBAL_LOCALE の場合、もしくは locale が
       有効なロケールオブジェクトハンドルでない場合は、 strerror_l() の動作は未定義である。

返り値

       関数 strerror(), strerror_l() と GNU 固有の関数 strerror_r() はエラー内容を説明する文字列を返す。  エラー
       番号が未知の場合は "Unknown error nnn" という メッセージを返す。

       On  success,  strerrorname_np()   and strerrordesc_np()  return the appropriate error description string.
       If errnum is an invalid error number, these functions return NULL.

       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 エラーコードを説明する文字列のために、充分な領域が確保できなかった。

バージョン

       strerror_l() 関数は glibc 2.6 で初めて登場した。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌───────────────────┬───────────────┬─────────────────────────┐
       │インターフェース属性                      │
       ├───────────────────┼───────────────┼─────────────────────────┤
       │strerror()         │ Thread safety │ MT-Unsafe race:strerror │
       ├───────────────────┼───────────────┼─────────────────────────┤
       │strerrorname_np(), │ Thread safety │ MT-Safe                 │
       │strerrordesc_np()  │               │                         │
       ├───────────────────┼───────────────┼─────────────────────────┤
       │strerror_r(),      │ Thread safety │ MT-Safe                 │
       │strerror_l()       │               │                         │
       └───────────────────┴───────────────┴─────────────────────────┘

準拠

       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(), strerrorname_np(), strerrordesc_np() は、非標準の拡張である。

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

注意

       The GNU C Library uses a buffer of 1024 characters for strerror().  This buffer size therefore should  be
       sufficient to avoid an ERANGE error when calling strerror_r().

       strerrorname_np()  and strerrordesc_np()  are thread-safe and async-signal-safe.

関連項目

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

この文書について

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

                                                   2020-11-01                                        STRERROR(3)