Manpages

名 前

fmtmsg − 整 形 さ れ た エ ラ ー メ ッ セ ー ジ を 表 示 す る

書 式

#include <fmtmsg.h>

int fmtmsg(long classification, const char *label,
int
severity, const char *text,
const char *
action, const char *tag);

説 明

こ の 関 数 は 、 引 き 数 で 記 述 さ れ た メ ッ セ ー ジ を 、 classification 引 き 数 で 指 定 さ れ た デ バ イ ス 上 に 表 示 す る 。 stderr に 書 き 出 さ れ る メ ッ セ ー ジ の フ ォ ー マ ッ ト は 、 MSGVERB 環 境 変 数 に 依 存 す る 。

label 引 き 数 は メ ッ セ ー ジ の 発 生 源 を 識 別 す る 。 こ の 文 字 列 は コ ロ ン で 区 切 ら れ た 2 つ の 部 分 か ら 構 成 さ れ て い な け れ ば な ら な い 。 1 つ 目 の 部 分 は 10 文 字 以 内 で な け れ ば な ら ず 、 2 つ 目 の 部 分 は 14 文 字 以 内 で な け れ ば な ら な い 。

text 引 き 数 に は エ ラ ー 条 件 を 記 述 す る 。

action 引 き 数 に は エ ラ ー か ら 回 復 す る た め に 利 用 可 能 な ス テ ッ プ を 記 述 す る 。 こ れ が 表 示 さ れ る 場 合 、 "TO FIX: " が 前 に 付 く 。

tag 引 き 数 は よ り 多 く の 情 報 を 見 つ け る た め の オ ン ラ イ ン ド キ ュ メ ン ト へ の 参 照 で あ る 。 こ れ は label 値 と ユ ニ ー ク な 識 別 番 号 を 含 ん で い る べ き で あ る 。 ダ ミ ー 引 き 数 各 引 き 数 に は ダ ミ ー の 値 を 入 れ る こ と が で き る 。 ダ ミ ー の classificationMM_NULLMC (0L) は 出 力 を 何 も 指 定 し な い 。 そ の た め 何 も 表 示 さ れ な い 。 ダ ミ ー の severityNO_SEV (0) は 重 大 度 (severity) が 与 え ら れ て い な い こ と を 表 す 。 値 MM_NULLLBL, MM_NULLTXT, MM_NULLACT, MM_NULLTAG((char *) 0) と 空 文 字 列 の 別 名 で あ り 、 MM_NULLSEVNO_SEV の 別 名 で あ る 。

classification 引 き 数
classification
引 き 数 は 4 種 類 の 情 報 を 記 述 す る 値 の 和 で あ る 。 最 初 の 値 は 出 力 チ ャ ン ネ ル を 定 義 す る 。

MM_PRINT

stderr に 出 力 す る 。

MM_CONSOLE

シ ス テ ム コ ン ソ ー ル に 出 力 す る 。

MM_PRINT | MM_CONSOLE 両 方 に 出 力 す る 。

2 番 目 の 値 は エ ラ ー の 発 生 源 で あ る :

MM_HARD ハ ー ド ウ ェ ア エ ラ ー が 起 こ っ た 。

MM_FIRM フ ァ ー ム ウ ェ ア エ ラ ー が 起 こ っ た 。

MM_SOFT ソ フ ト ウ ェ ア エ ラ ー が 起 こ っ た 。

3 番 目 の 値 は 問 題 の 検 知 を 行 っ た も の を エ ン コ ー ド す る :

MM_APPL ア プ リ ケ ー シ ョ ン に よ っ て 検 知 さ れ た 。

MM_UTIL ユ ー テ ィ リ テ ィ に よ っ て 検 知 さ れ た 。

MM_OPSYS オ ペ レ ー テ ィ ン グ シ ス テ ム に よ っ て 検 知 さ れ た 。

4 番 目 の 値 は 問 題 の 重 大 度 を 表 す :

MM_RECOVER 回 復 可 能 な エ ラ ー で あ る 。

MM_NRECOV 回 復 不 可 能 な エ ラ ー で あ る 。

severity 引 き 数
severity
引 き 数 は 以 下 の 1 つ の 値 を と る こ と が で き る 。

MM_NOSEV 重 大 度 は 表 示 さ れ な い 。

MM_HALT こ の 値 は

HALT と し て 表 示 さ れ る 。

MM_ERROR こ の 値 は

ERROR と し て 表 示 さ れ る 。

MM_WARNING こ の 値 は

WARNING と し て 表 示 さ れ る 。

MM_INFO こ の 値 は

INFO と し て 表 示 さ れ る 。

数 値 の 場 合 は 0 か ら 4 で あ る 。 addseverity(3) ま た は 環 境 変 数 SEV_LEVEL を 使 う こ と に よ り 、 表 示 す る レ ベ ル と 文 字 列 を 更 に 追 加 で き る 。

返 り 値

関 数 は 4 つ の 値 を 返 す :

MM_OK 全 て が う ま く い っ た 。

MM_NOTOK 完 全 に 失 敗 し た 。

MM_NOMSG

stderr に 書 き 込 む と き に エ ラ ー が 起 こ っ た 。

MM_NOCON コ ン ソ ー ル に 書 き 込 む と き に エ ラ ー が 起 こ っ た 。

環 境 変 数

環 境 変 数 MSGVERB ("message verbosity") は stderr へ の 出 力 の 一 部 を 抑 制 す る の に 使 う こ と が で き る 。 (コ ン ソ ー ル へ の 出 力 に は 影 響 し な い 。 ) こ の 変 数 が 定 義 さ れ て 、 NULL で な く 、 コ ロ ン で 区 切 ら れ た 有 効 な キ ー ワ ー ド の リ ス ト で あ る 場 合 、 キ ー ワ ー ド に 対 応 す る メ ッ セ ー ジ の 一 部 の み が 表 示 さ れ る 。 有 効 な キ ー ワ ー ド は "label", "severity", "text", "action", "tag" で あ る 。 環 境 変 数 SEV_LEVEL は 新 し い 重 大 度 レ ベ ル を 導 入 す る の に 使 用 で き る 。 デ フ ォ ル ト で は 、 上 記 の 5 つ の 重 大 度 レ ベ ル の み が 利 用 可 能 で あ る 。 他 の 数 値 の 場 合 、 fmtmsg() は 何 も 表 示 し な い 。 fmtmsg() を 初 め て 呼 び 出 す 前 に 、 ユ ー ザ ー が SEV_LEVEL

SEV_LEVEL=[description[:description[:...]]] の よ う な 形 式 で プ ロ セ ス の 環 境 に 設 定 す る と 、 fmtmsg() は (標 準 の レ ベ ル 0−4 に 加 え て ) level に 指 定 さ れ た 値 も 受 け 付 け 、 そ の よ う な レ ベ ル の 問 題 が 発 生 す る と 指 定 さ れ た printstring を 表 示 す る 。 各 description は

severity−keyword,level,printstring と い う 形 式 で あ る 。

severity−keyword 部 は fmtmsg() に 使 用 さ れ な い が 、 存 在 し な け れ ば な ら な い 。 level 部 は 数 値 を 文 字 列 で 表 し た も の で あ る 。 数 値 は 4 よ り 大 き い 値 で な け れ ば な ら な い 。 こ の 値 は fmtmsg() の severity 引 き 数 で 使 用 さ れ な け れ ば な ら ず 、 こ の 重 大 度 を 選 択 す る 。 前 も っ て 宣 言 さ れ た 重 大 度 を 上 書 き す る こ と は で き な い 。 printstring は 、 こ の 重 大 度 の メ ッ セ ー ジ が fmtmsg() に よ っ て 生 成 さ れ た 場 合 に 表 示 さ れ る 文 字 列 で あ る 。

バ ー ジ ョ ン

fmtmsg() は 、 バ ー ジ ョ ン 2.1 以 降 の glibc で 提 供 さ れ て い る 。

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )

glibc 2.16 よ り 前 の バ ー ジ ョ ン で は 、 fmtmsg() 関 数 は 、 保 護 さ れ て い な い 静 的 な 変 数 を 使 う た め 、 ス レ ッ ド セ ー フ で は な い 。

glibc 2.16 以 降 で は 、 fmtmsg() 関 数 は ロ ッ ク を 使 っ て 静 的 な 変 数 を 保 護 し て お り 、 ス レ ッ ド セ ー フ で あ る 。

準 拠

関 数 fmtmsg() と addseverity(3) と 環 境 変 数 MSGVERBSEV_LEVEL は System V に 由 来 し て い る 。 関 数 fmtmsg() と 環 境 変 数 MSGVERB は POSIX.1−2001 に 記 述 さ れ て い る 。

注 意

System V と UnixWare の man ペ ー ジ に は 、 「 こ れ ら の 関 数 は "pfmt() と addsev()" ま た は "pfmt(), vpfmt(), lfmt(), vlfmt()" で 置 き 換 え ら れ て お り 、 将 来 は 削 除 さ れ る 予 定 で あ る 」 と 書 か れ て い る 。

#include <stdio.h>
#include <stdlib.h>
#include <fmtmsg.h>

int
main(void)
{
long class = MM_PRINT | MM_SOFT | MM_OPSYS | MM_RECOVER;
int err;

err = fmtmsg(class, "util−linux:mount", MM_ERROR,
"unknown mount option", "See mount(8).",
"util−linux:mount:017");
switch (err) {
case MM_OK:
break;
case MM_NOTOK:
printf("Nothing printed\n");
break;
case MM_NOMSG:
printf("Nothing printed to stderr\n");
break;
case MM_NOCON:
printf("No console output\n");
break;
default:
printf("Unknown error from fmtmsg()\n"); }
exit(EXIT_SUCCESS); } 出 力 は

util−linux:mount: ERROR: unknown mount option
TO FIX: See mount(8). util−linux:mount:017 の よ う に な り 、

MSGVERB=text:action; export MSGVERB を 実 行 す る と 、 次 の よ う に な る 。

unknown mount option
TO FIX: See mount(8).

関 連 項 目

addseverity(3), perror(3)

こ の 文 書 に つ い て

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