日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
STRERROR(3) FreeBSD ライブラリ関数マニュアル STRERROR(3)
名称
perror, strerror, strerror_l, strerror_r, sys_errlist, sys_nerr -- システ
ムのエラーメッセージ
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <stdio.h>
void
perror(const char *string);
extern const char * const sys_errlist[];
extern const int sys_nerr;
#include <string.h>
char *
strerror(int errnum);
char *
strerror_l(int errnum, locale_t);
int
strerror_r(int errnum, char *strerrbuf, size_t buflen);
解説
strerror(), strerror_l(), strerror_r() と perror() 関数は、エラー番号に対
応するエラーメッセージの文字列を検索します。
strerror() 関数は、エラー番号の引数 errnum を受け付け、対応するメッセージ
文字列へのポインタを返します。strerror() は、スレッドセーフではありませ
ん。別のスレッドから呼び出される strerror() によって上書きされるかもしれ
ない内部の静的バッファへのポインタを返します。
strerror_l() 関数は、errnum エラー番号と locale ロケールハンドル引数を受
け付け、与えられたロケールの指定されたエラーに対応する文字列へのポインタ
を返します。strerror_l() は、スレッドセーフであり、その結果は、現在のス
レッドから strerror_l() への別の呼び出しによってこのみ上書きすることがで
きます。
strerror_r() 関数は、buflen 文字の最大に対して strerrbuf に同じ結果を格納
し、成功すれば、0 を返します。
perror() 関数は、グローバル変数 errno (intro(2)) の現在の値に対応するエ
ラーメッセージを見つけて、それに改行を続けて、標準エラーファイル記述子に
書き込みます。引数 string が NULL でなく、ヌル文字を指さないなら、この文
字列は、メッセージ文字列の先頭に追加され、コロンと空白 (``: '') によって
それから区切られます。そうでなければ、エラーメッセージ文字列だけが印刷
(表示) されます。
エラー番号が認識されないなら、これらの関数は、10 進数のエラー番号が後続す
る ``Unknown error: '' を含んでいるエラーメッセージ文字列を返します。
strerror() と strerror_r() 関数は、警告として EINVAL を返します。この実装
によって認識されるエラー番号は、範囲 0 < errnum < sys_nerr で失敗します。
また、番号 0 も認識されますが、これを利用するアプリケーションは、たぶん
errno の指定されない値を使用するためです。
十分な記憶デバイスがエラー文字列を含むために (buflen で指定されるような)
strerrbuf で提供されないなら、strerror_r() は、ERANGE を返し、strerrbuf
は、切り詰められ、buflen によって指定される長さに適合するためにヌル文字で
終了するエラーメッセージを含んでいます。
メッセージ文字列は、外部配列 sys_errlist を使用して直接アクセスすることが
できます。外部の値 sys_nerr は、sys_errlist のメッセージのカウントを含ん
でいます。これらの変数の使用は、非推奨です。strerror(), strerror_l() また
は strerror_r() は、代わりに使用されるべきです。
使用例
次の使用例は、エラーを報告するために perror() を使用する方法を示していま
す。
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int fd;
if ((fd = open("/nonexistent", O_RDONLY)) == -1) {
perror("open()");
exit(1);
}
printf("File descriptor: %d\n", fd);
return (0);
}
実行するとき、プログラムは、`open(): No such file or directory' (このよう
なファイルまたはディレクトリがありません) という行に沿ってエラーメッセー
ジが印刷 (表示) されます。
関連項目
intro(2), err(3), psignal(3)
規格
perror() と strerror() 関数は、ISO/IEC 9899:1999 (``ISO C99'') に適合して
います。strerror_r() 関数は、IEEE Std 1003.1-2001 (``POSIX.1'') に適合し
ています。strerror_l() 関数は、IEEE Std 1003.1-2008 (``POSIX.1'') に適合
しています。
歴史
strerror() と perror() 関数は、4.4BSD ではじめて登場しました。
strerror_r() 関数は、Wes Peters <wes@FreeBSD.org> によって FreeBSD 4.4 で
実装されました。strerror_l() 関数は、FreeBSD 13.0 で追加されました。
バグ
strerror() 関数は、続く呼び出しによって上書きされる静的なバッファ中の結果
を返します。
(将来のサポートの保証がない) 推奨されない sys_errlist 変数を使用している
プログラムは、矛盾した宣言のためにしばしばコンパイルに失敗します。
sys_errlist オブジェクトのサイズは、FreeBSD の存続期間の間に大きくなり、
いくらかの ABI の安定性保証を破るかもしれません。
FreeBSD 13.2 December 17, 2020 FreeBSD 13.2