Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all ![bug](/img/bug.png)
![bug](/img/bug.png)
名前
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)