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
をセットする。
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする