Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all
名前
perror - システムエラーメッセージを出力する
書式
#include <stdio.h> void perror(const char *s); #include <errno.h> const char * const sys_errlist[]; int sys_nerr; int errno; /* 実際にこのように宣言されているわけではない。 errno(3) 参照 */ glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照): sys_errlist, sys_nerr: _BSD_SOURCE
説明
関数 perror() は、システムコールやライブラリ関数の呼び出しにおいて、最後に発生した エラー に関する説明メッセージを生成し、標準エラー出力に出力する。 (s が NULL でなく、 *s がヌルバ イト ('\0') でない場合には) 引き数の文字列 s がまず出力され、続いてコロン、空白が出力さ れ、 それからメッセージと改行が出力される。 このメッセージを最大限活用するためには、引き数文字列にエラーが発生した 関数名を入れておく とよい。 エラー番号は外部変数 errno から取得される。 errno はエラーが発生した時に設定さ れ、 成功した呼び出しではクリアされない。 大域変数のエラーリスト sys_errlist[] は errno を添字とする配列で、この 配列から改行無しの エラーメッセージが取得される。 テーブルでの最大のメッセージ 番号は sys_nerr -1 となる。 こ のテーブルを直接参照する際には注意すること。 なぜなら、新しいエラー番号が sys_errlist[] に 追加済とは限らないからである。 現在では、sys_errlist[] の使用は非推奨となっている。 システムコールが失敗した場合、通常、返り値として -1 が返り、 errno にエラーを識別する値が 設定される (設定されるエラー番号は <errno.h> に記載されている)。 多くのライブラリ関数も同 様の動作となる。 関数 perror() は、このエラーコードの可読なメッセージへの変換を行う。 errno は、ライブラリ呼び出しが成功した後には未定義であることに注意が必要である: その呼び出 し自身は成功したとしても、内部で呼び出した他のライブラリ関数が 失敗して、その結果をこの変 数に設定することがあるからだ。 よって、失敗した呼び出しの直後に perror() を呼ばない場合に は errno の値を 保存しておかなければならない。
準拠
関数 perror() と外部変数 errno (errno(3) 参照) は C89, 4.3BSD, POSIX.1-2001 に準拠してい る。 外部変数 sys_nerr と sys_errlist は BSD に準拠している。
注意
外部変数 sys_nerr と sys_errlist は glibc で定義されているが、 <stdio.h> に含まれている。
関連項目
err(3), errno(3), error(3), strerror(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。 2014-05-28 PERROR(3)