Man page - fmtmsg(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

FMTMSG

名 前
書 式
説 明
ダ ミ ー 引 数
classification 引 数
severity 引 数
返 り 値
環 境 変 数
バ ー ジ ョ ン
属 性
準 拠
注 意

関 連 項 目
こ の 文 書 に つ い て

名 前

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 で 提 供 さ れ て い る 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-33128-1.png

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

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

準 拠

関 数 fmtmsg () と addseverity (3) と 環 境 変 数 MSGVERB SEV_LEVEL は System V に 由 来 し て い る 。

関 数 fmtmsg () と 環 境 変 数 MSGVERB は POSIX.1-2001 と POSIX.1-2008 に 規 定 さ れ て い る 。

注 意

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