.\" Copyright (C) 2006 Justin Pryzby .\" and Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(PERMISSIVE_MISC) .\" Permission is hereby granted, free of charge, to any person obtaining .\" a copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, sublicense, and/or sell copies of the Software, and to .\" permit persons to whom the Software is furnished to do so, subject to .\" the following conditions: .\" .\" The above copyright notice and this permission notice shall be .\" included in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, .\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY .\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, .\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE .\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. .\" %%%LICENSE_END .\" .\" References: .\" glibc manual and source .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2006 Yuichi SATO .\" all rights reserved. .\" Translated 2006-08-04 by Yuichi SATO , LDP v2.36 .\" .TH ERROR 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 error, error_at_line, error_message_count, error_one_per_line, error_print_progname \- glibc のエラー書き出し関数 .SH 書式 .nf \fB#include \fP .PP \fBvoid error(int \fP\fIstatus\fP\fB, int \fP\fIerrnum\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP .PP \fBvoid error_at_line(int \fP\fIstatus\fP\fB, int \fP\fIerrnum\fP\fB, const char *\fP\fIfilename\fP\fB,\fP \fB unsigned int \fP\fIlinenum\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP .PP \fBextern unsigned int \fP\fIerror_message_count\fP\fB;\fP .PP \fBextern int \fP\fIerror_one_per_line\fP\fB;\fP .PP \fBextern void (*\fP\fIerror_print_progname\fP\fB) (void);\fP .fi .SH 説明 \fBerror\fP() は汎用的なエラー出力関数である。 この関数は標準出力 (\fIstdout\fP) をフラッシュしてから、情報を標準エラー出力 (\fIstderr\fP) に出力する。 出力される情報は、プログラム名、コロン、スペース、 \fBprintf\fP(3) 形式の フォーマット文字列 \fIformat\fP で指定されたメッセージである。 \fIerrnum\fP が 0 以外の場合、 2 つ目のコロンとスペースの後に \fIstrerror(errnum)\fP で指定された文字列も出力される。 \fIformat\fP で必要な引数は、引数リストの \fIformat\fP の後ろに続けて指定する必要がある。出力は改行文字で終端される。 .PP \fBerror\fP() で出力されるプログラム名は、大域変数 \fBprogram_invocation_name\fP(3) の値である。 \fIprogram_invocation_name\fP の初期値は \fImain\fP() の \fIargv[0]\fP の値と等しい。この変数の値は変更可能であり、変更すると \fBerror\fP() の出力が変わる。 .PP \fIstatus\fP が 0 以外の場合、 \fBerror\fP() は \fBexit\fP(3) を呼び出して、指定された終了ステータスでプログラムを終了させる。 .PP \fBerror_at_line\fP() 関数は、引数 \fIfilename\fP と \fIlinenum\fP が追加されている以外は \fBerror\fP() と同じである。 生成される出力は \fBerror\fP() と同様だが、プログラム名の後に コロン、 \fIfilename\fP の値、コロン、 \fIlinenum\fP の値が出力される点が異なる。 プリプロセッサの値 \fB__LINE__\fP と \fB__FILE__\fP は、 \fBerror_at_line\fP() を呼び出すときに役に立つが、その他のプリプロセッサの値も使うことができる。例えば、これらの引数で入力ファイルにおける位置を参照することもできる。 .PP 大域変数 \fIerror_one_per_line\fP が 0 以外に設定されている場合、 \fIfilename\fP と \fIlinenum\fP の値が両方とも等しい一連の \fBerror_at_line\fP() の呼び出しは、 1 つの (最初の) メッセージの出力にまとめられる。 .PP 大域変数 \fIerror_message_count\fP は、 \fBerror\fP() と \fBerror_at_line\fP() で出力されたメッセージの数を表す。 .PP 大域変数 \fIerror_print_progname\fP に 関数のアドレスが割り当てられている場合 (つまり NULL ではない場合)、 メッセージの前にプログラム名とコロンを書き出すのではなく、この関数を呼び出す。この関数は、適切な文字列を標準エラー出力 (\fIstderr\fP) に書き出さなければならない。 .SH 属性 この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 .ad l .TS allbox; lb lb lbw33 l l l. インターフェース 属性 値 T{ \fBerror\fP() T} Thread safety MT\-Safe locale T{ \fBerror_at_line\fP() T} Thread safety T{ MT\-Unsafe\ race: error_at_line/error_one_per_line locale T} .TE .ad .PP 内部変数 \fIerror_one_per_line\fP に (同期の仕組みなしで) アクセスが行われる (ただし、この変数は一度使用された \fIint\fP なので、十分安全であろう)。 \fIerror_one_per_line\fP が 0 以外に設定されている場合、最後に表示したファイル名と行番号を保持するのに使用される (ユーザーに公開されない) 内部静的変数にアクセスが行われ、同期なしで変更される。この変更は、アトミックではなく、キャンセルが無効化される前にも発生する。そのため、これら 2 つの変数のうち 1 つだけが変更された後でも割り込まれることがある。それ以外は、 \fBerror_at_line\fP() は \fBerror\fP とほぼ同じである。 .SH 準拠 これらの関数と変数は GNU による拡張であり、 移植性を考えたプログラムでは使用すべきではない。 .SH 関連項目 \fBerr\fP(3), \fBerrno\fP(3), \fBexit\fP(3), \fBperror\fP(3), \fBprogram_invocation_name\fP(3), \fBstrerror\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。