Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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() と同じであ
       る。  生成される出力は error() と同様だが、プログラム名の後に コロン、 filename の値、コロ
       ン、 linenum の値が出力される点が異なる。

       プリプロセッサの値 __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 safety │ MT-Safe locale                    │
       ├─────────────────┼───────────────┼───────────────────────────────────┤
       │error_at_line()  │ Thread safety │ MT-Unsafe race:                   │
       │                 │               │ error_at_line/error_one_per_line  │
       │                 │               │ locale                            │
       └─────────────────┴───────────────┴───────────────────────────────────┘
       内部変数 error_one_per_line に (同期の仕組みなしで) アクセスが行われる (ただし、この変数は
       一度使用された int なので、十分安全であろう)。 error_one_per_line が 0  以外に設定されてい
       る場合、最後に表示したファイル名と行番号を保持するのに使用される  (ユーザーに公開されない)
       内部静的変数にアクセスが行われ、同期なしで変更される。この変更は、アトミックではなく、キャ
       ンセルが無効化される前にも発生する。そのため、これら 2 つの変数のうち 1 つだけが変更された
       後でも割り込まれることがある。それ以外は、 error_at_line() は 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/ に書かれている。