名 前
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 値 と ユ ニ ー ク な 識 別 番 号 を 含 ん で い る べ き で あ る 。 ダ ミ ー 引 き 数 各 引 き 数 に は ダ ミ ー の 値 を 入 れ る こ と が で き る 。 ダ ミ ー の classification 値 MM_NULLMC (0L) は 出 力 を 何 も 指 定 し な い 。 そ の た め 何 も 表 示 さ れ な い 。 ダ ミ ー の severity 値 NO_SEV (0) は 重 大 度 (severity) が 与 え ら れ て い な い こ と を 表 す 。 値 MM_NULLLBL, MM_NULLTXT, MM_NULLACT, MM_NULLTAG は ((char *) 0) と 空 文 字 列 の 別 名 で あ り 、 MM_NULLSEV は NO_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) と 環 境 変 数 MSGVERB と SEV_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).
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。