kazmax - Linux で自宅サーバー

strerror - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 関連項目

名前

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

書式

#include <string.h>
char *strerror(int errnum);
char *strerror_r(int errnum, char *buf, size_t buflen);
                        /* GNU 仕様の strerror_r() */

#define _XOPEN_SOURCE 600#include <string.h>
int strerror_r(int errnum, char *buf, size_t buflen);
                        /* XSI 準拠の strerror_r() */

説明

strerror () 関数は、引き数 errnum の中で引き渡される エラーコードを説明する文字列を返す。 可能であるならば、適切な言語を選択するために、 現在のロケールの LC_MESSAGES を使う。 この文字列は、アプリケーションで変更してはならないが、 その後に起こる perror () や strerror () の呼び出しで 変更されても構わない。 この文字列を変更するライブラリ関数はない。
strerror_r () 関数は strerror () と似ているが、 スレッドセーフである。 この関数には二種類のバージョンが存在し、 POSIX.1-2001 で規定された XSI 準拠のバージョンと、 GNU 仕様のバージョン (glibc 2.0 以降で利用可能) である。 _XOPEN_SOURCE が 600 に定義されると XSI 準拠のバージョンが提供され、 それ以外の場合には GNU 仕様のバージョンが提供される。
移植性が必要なアプリケーションでは、 XSI 準拠の strerror_r ()を使う方がよい。 この関数は、ユーザーから提供される長さ buflen のバッファ buf にエラー文字列を返す。
GNU 仕様の strerror_r ()は、エラーメッセージを格納した文字列へのポインタを返す。 返り値は、この関数が buf に格納した文字列へのポインタか、 何らかの (不変な) 静的な文字列へのポインタ、のいずれかとなる (後者の場合は buf は使用されない)。 buf に文字列が格納される場合は、 最大で buflen バイトが格納され ( buflen が小さ過ぎたときには文字列は切り詰められる)、 文字列には必ず終端ヌル文字が含まれる。

返り値

strerror () と strerror_r () はエラー内容を説明する 文字列を返す。エラー番号が未知の場合は "Unknown error nnn" という メッセージを返す。
XSI 準拠の strerror_r () 関数は成功すると 0 を返す。 エラーの場合には、 -1 を返し、 errno にエラー内容を示す値をセットする。

エラー

EINVAL
errnum の値が有効なエラー番号ではない。
ERANGE
エラーコードを説明する文字列のために、充分な領域が確保できなかった。

準拠

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

関連項目