fmtmsg(3) - wariua/manpages-ko GitHub Wiki
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
์ธ์๋ ๋ฉ์์ง์ ์์ฒ์ ์๋ณํด ์ค๋ค. ๋ฌธ์์ด์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ ๋ถ๋ถ์ผ๋ก ๋์ด ์์ด์ผ ํ๋ค. ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ 10๊ธ์๋ฅผ ๋์ ์ ์๊ณ ๋ ๋ฒ์งธ ๋ถ๋ถ์ 14๊ธ์๋ฅผ ๋์ ์ ์๋ค.
text
์ธ์๋ ์ค๋ฅ์ ์ํ๋ฅผ ๊ธฐ์ ํ๋ค.
action
์ธ์๋ ์ค๋ฅ๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์ํด ํ ์ ์๋ ์กฐ์น๋ฅผ ๊ธฐ์ ํ๋ค. ์ด๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ ์์ "TO FIX: "๊ฐ ๋ถ๋๋ค.
tag
์ธ์๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ ์จ๋ผ์ธ ๋ฌธ์์ ๋ํ ์ฐธ์กฐ์ด๋ค. label
์ ๊ฐ๊ณผ ๊ณ ์ ํ ์๋ณ ๋ฒํธ๋ฅผ ๋ด์์ผ ํ ๊ฒ์ด๋ค.
์ธ์ ๊ฐ๊ฐ์ด ๋๋ฏธ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ๋๋ฏธ ๋ถ๋ฅ ๊ฐ์ธ MM_NULLMC
(0L
)๋ ์ด๋ค ์ถ๋ ฅ๋ ๋ํ๋ด์ง ์๊ณ , ๊ทธ๋์ ์๋ฌด ๊ฒ๋ ์ฐํ์ง ์๋๋ค. ๋๋ฏธ ์ฌ๊ฐ๋ ๊ฐ์ธ NO_SEV
(0
)๋ ์ด๋ค ์ฌ๊ฐ๋๋ ์ ๊ณตํ์ง ์๋๋ค๋ ๋ง์ด๋ค. MM_NULLLBL
, MM_NULLTXT
, MM_NULLACT
, MM_NULLTAG
๋ ((char *) 0)
, ์ฆ ๋น ๋ฌธ์์ด๊ณผ ๋์์ด์ด๋ฉฐ MM_NULLSEV
๋ NO_SEV
์ ๋์์ด์ด๋ค.
classification
์ธ์๋ 4๊ฐ์ง ์ข
๋ฅ์ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ๋ ๊ฐ๋ค์ ํฉ์น ๊ฒ์ด๋ค.
์ฒซ ๋ฒ์งธ ๊ฐ์ ์ถ๋ ฅ ์ฑ๋์ ๊ท์ ํ๋ค.
MM_PRINT
-
stderr
๋ก ์ถ๋ ฅ. MM_CONSOLE
- ์์คํ ์ฝ์๋ก ์ถ๋ ฅ.
MM_PRINT | MM_CONSOLE
- ๋ ๋ชจ๋๋ก ์ถ๋ ฅ.
๋ ๋ฒ์งธ ๊ฐ์ ์ค๋ฅ์ ์์ฒ์ด๋ค.
MM_HARD
- ํ๋์จ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์.
MM_FIRM
- ํ์จ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์.
MM_SOFT
- ์ํํธ์จ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์.
์ธ ๋ฒ์งธ ๊ฐ์ ์ด๋์ ๋ฌธ์ ๋ฅผ ํ์งํ๋์ง ๊ธฐ๋กํ๋ค.
MM_APPL
- ์์ฉ์ด ํ์งํ์.
MM_UTIL
- ์ ํธ๋ฆฌํฐ๊ฐ ํ์งํ์.
MM_OPSYS
- ์ด์ ์ฒด์ ๊ฐ ํ์งํ์.
๋ค ๋ฒ์งธ ๊ฐ์ ์ฌ๊ฑด์ ์ฌ๊ฐ๋๋ฅผ ๋ณด์ฌ ์ค๋ค.
MM_RECOVER
- ๋ณต๊ตฌ ๊ฐ๋ฅํ ์ค๋ฅ์.
MM_NRECOV
- ๋ณต๊ตฌ ๋ถ๊ฐ๋ฅํ ์ค๋ฅ์.
severity
์ธ์๋ ๋ค์ ๊ฐ๋ค ์ค ํ๋๋ฅผ ๋ฐ์ ์ ์๋ค.
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
์ ์ด์ฉํด ์๋ก์ด ์ฌ๊ฐ๋ ์์ค์ ๋์
ํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์์์ ๊ธฐ์ ํ ๋ค์ฏ ๊ฐ์ง ์ฌ๊ฐ๋ ์์ค๋ง ์ฌ์ฉํ ์ ์๋ค. ๋ค๋ฅธ ์ซ์ ๊ฐ์ ์ฌ์ฉํ๋ฉด fmtmsg()
๊ฐ ์๋ฌด ๊ฒ๋ ์ฐ์ง ์์ ๊ฒ์ด๋ค. ํ์ง๋ง ์ฌ์ฉ์๊ฐ ์ฒซ ๋ฒ์งธ fmtmsg()
ํธ์ถ ์ ์ ํ๋ก์ธ์ค์ ํ๊ฒฝ์ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก SEV_LEVEL
์ ๋ฃ์ด ์ฃผ๋ฉด fmtmsg()
๊ฐ (ํ์ค ์์ค 0~4์ ๋ํด์) ์ง์ ํ ๊ฐ๋ค๋ ๋ฐ์๋ค์ด๊ฒ ๋์ด ๊ทธ ์์ค์ ์ค๋ฅ ๋ฐ์ ์ ์ง์ ํ ์ถ๋ ฅ ๋ฌธ์์ด์ ์ฌ์ฉํ๊ฒ ๋๋ค.
SEV_LEVEL=[description[:description[:...]]]
description
๊ฐ๊ฐ์ ๋ค์ ํ์์ด๋ค.
severity-keyword,level,printstring
severity-keyword
๋ถ๋ถ์ fmtmsg()
์์ ์ฌ์ฉํ์ง ์์ง๋ง ๊ทธ๋๋ ์์ด์ผ ํ๋ค. level
๋ถ๋ถ์ ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ํํํ ๊ฒ์ด๋ค. ๊ทธ ์ซ์ ๊ฐ์ 4๋ณด๋ค ์ปค์ผ ํ๋ค. ์ด ์์ค์ ์ ํํ๋ ค๋ฉด fmtmsg()
์ severity
์ธ์๋ก ์ด ๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ฏธ ์ ์๋ ์์ค๋ค์ ๋ฎ์ด์ฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. printstring
์ fmtmsg()
์์ ์ด ์์ค์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฐํ๋ ๋ฌธ์์ด์ด๋ค.
glibc ๋ฒ์ 2.1๋ถํฐ fmtmsg()
๋ฅผ ์ ๊ณตํ๋ค.
์ด ์ ์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ค์ ๋ํ ์ค๋ช ์ attributes(7)๋ฅผ ๋ณด๋ผ.
์ธํฐํ์ด์ค | ์์ฑ | ๊ฐ |
---|---|---|
fmtmsg() |
์ค๋ ๋ ์์ ์ฑ | glibc >= 2.16: MT-Safe glibc < 2.16: MT-Unsafe |
glibc 2.16 ์ ์์ fmtmsg()
ํจ์๋ ๋ณดํธ๊ฐ ๋์ง ์๋ ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ทธ๋์ ์ค๋ ๋ ์์ ํ์ง ์๋ค.
glibc 2.16๋ถํฐ fmtmsg()
ํจ์๋ ๋ฝ์ ์ฌ์ฉํด ๊ทธ ์ ์ ๋ณ์๋ฅผ ๋ณดํธํ๋ฉฐ, ๊ทธ๋์ ์ค๋ ๋ ์์ ํ๋ค.
ํจ์ fmtmsg()
๋ฐ addseverity(3), ๊ทธ๋ฆฌ๊ณ ํ๊ฒฝ ๋ณ์ MSGVERB
๋ฐ SEV_LEVEL
์ ์์คํ
V์์ ์จ ๊ฒ์ด๋ค.
ํจ์ fmtmsg()
์ ํ๊ฒฝ ๋ณ์ MSGVERB
๋ฅผ POSIX.1-2001 ๋ฐ POSIX.1-2008์์ ๊ธฐ์ ํ๊ณ ์๋ค.
์์คํ
V ๋ฐ UnixWare ๋งจ ํ์ด์ง์์๋ ์ด ํจ์๋ค์ด "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).
2017-09-15