ERROR

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
IndexJM Home Page
 

名前

error, error_at_line, error_message_count, error_one_per_line, error_print_progname - glibc のエラー書き出し関数 

書式

#include <error.h>void error(int status, int errnum, const char *format, ...);void error_at_line(int status, int errnum, const char *filename, unsigned int linenum, const char *format, ...);extern unsigned int error_message_count;extern int error_one_per_line;extern void (*error_print_progname) (void);
 

説明

error() は汎用的なエラー書き出し関数である。 この関数は標準出力 (stdout) に書き出してから、標準エラー出力 (stderr) に書き出す。 書き出す内容は、プログラム名・コロン・スペース・ printf(3) 形式の フォーマット文字列format で指定されたメッセージである。 errnum が 0 以外の場合、2 つ目のコロンとスペースの後にstrerror(errnum) で指定された文字列も書き出す。 format に必要な任意の引き数が、引き数リストの formatの後に続く。 出力の終端には改行文字が付く。

error() で出力されるプログラム名は、大域変数 program_invocation_name(3) の値である。program_invocation_name の初期値は main() の argv[0] の値と等しい。 この変数の値は変更可能であり、変更すると error() の出力が変わる。

status が 0 以外の場合、 error() は exit(3) を呼び出して、指定された終了ステータスでプログラムを終了させる。

error_at_line() 関数は、引き数 filenamelinenum が追加されている以外は、 error() と同じである。 生成される出力は、プログラム名の後に コロン・filename の値・コロン・linenum の値が書き出される以外は、error() と同じである。 プリプロセッサの値 __LINE____FILE__ は、error_at_line() を呼び出すときに役に立つ。 その他のプリプロセッサの値も使うことができる。 例えば、これらの引き数で入力ファイルにおける位置を参照できる。

大域変数 error_one_per_line が 0 以外に設定されている場合、 filenamelinenumの値が共に等しい error_at_line() の呼び出しは、 1 つの (最初の) メッセージの出力にまとめられる。

大域変数 error_message_count は、 error() と error_at_line() で出力されたメッセージの数を表す。

大域変数 error_print_progname に 関数のアドレスが割り当てられている場合 (つまり NULL ではない場合)、 メッセージの前にプログラム名とコロンを書き出すのではなく、 この関数を呼び出す。 この関数は標準エラー出力 (stderr) に対しての適切な文字列を書き出さなければならない。 

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース属性
error()Thread safetyMT-Safe locale
error_at_line()Thread safetyMT-Unsafe race: error_at_line/error_one_per_line locale

The internal error_one_per_line variable is accessed (without any form of synchronization, but since it's an int used once, it should be safe enough) and, if error_one_per_line is set nonzero, the internal static variables (not exposed to users) used to hold the last printed filename and line number are accessed and modified without synchronization; the update is not atomic and it occurs before disabling cancellation, so it can be interrupted only after one of the two variables is modified. After that,error_at_line() is very much like error(). 

準拠

これらの関数と変数は GNU による拡張であり、 移植性を考えたプログラムでは使用すべきではない。 

関連項目

err(3), errno(3), exit(3), perror(3),program_invocation_name(3), strerror(3) 

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報はhttps://www.kernel.org/doc/man-pages/ に書かれている。


関連キーワード

int,プログラム,コロン,filename,format,メッセージ,errnum,linenum,extern,count 

Index

名前
書式
説明
属性
準拠
関連項目
この文書について

This document was created byman2html, using the manual pages.
Time: 15:49:11 GMT, July 11, 2021