strerror - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
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" といった文字列を返し、
errno
に
EINVAL
をセットする。
関連項目
err
(3),
errno
(3),
error
(3),
perror
(3),
strsignal
(3)