Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       fmtmsg - выводит отформатированные сообщения об ошибках

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #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 и уникальный идентификационный номер.

   Фиктивные аргументы
       Каждый  аргумент  может  иметь фиктивное значение. Для фиктивного значения классификации (classification)
       MM_NULLMC (0L) ничего не выводится, то есть ничего не печатается. Фиктивное значение важности  (severity)
       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     Это значение печатается как ОСТАНОВ.

       MM_ERROR    Это значение печатается как ОШИБКА.

       MM_WARNING  Это значение печатается как ПРЕДУПРЕЖДЕНИЕ.

       MM_INFO     Это значение печатается как ИНФОРМАЦИОННОЕ.

       Числовые значения от 0 до 4. Используя функцию  addseverity(3)  или  переменную  окружения  SEV_LEVEL  вы
       можете добавить дополнительные уровни и строки для печати.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Функция может возвращать 4 значения:

       MM_OK       Всё хорошо.

       MM_NOTOK    Всё плохо.

       MM_NOMSG    Ошибка записи в stderr.

       MM_NOCON    Ошибка записи в консоль.

СРЕДА ОКРУЖЕНИЯ

       The  environment  variable  MSGVERB  ("message verbosity") can be used to suppress parts of the output to
       stderr.  (It does not influence output to the console.)  When this variable is defined, is non-NULL,  and
       is  a  colon-separated  list of valid keywords, then only the parts of the message corresponding to these
       keywords is printed.  Valid keywords are "label", "severity", "text", "action", and "tag".

       Переменная окружения SEV_LEVEL может использоваться для  ввода  новых  уровней  важности.  По  умолчанию,
       доступно  только  пять  уровней  важности, описанных выше. Для любого другого числового значения fmtmsg()
       ничего не печатает. Если пользователь задал SEV_LEVEL в формате

              SEV_LEVEL=[описание[:описание[:...]]]

       в окружении процесса перед первым вызовом fmtmsg() и каждое описание имеет вид

              ключевое-слово-важности,уровень,печатаемая-строка

       then fmtmsg()  will also accept the indicated values for the level (in addition to  the  standard  levels
       0–4), and use the indicated printstring when such a level occurs.

       Часть  «ключевое-слово-важности»  не используется fmtmsg(), но указывается. Часть «уровень» — это строка,
       представляющая число. Числовое значение должно быть числом более 4. Это значение должно использоваться  в
       аргументе  важности  fmtmsg()  для  выбора  этого  класса.  Невозможно заменить любой из предопределённых
       классов. «Печатаемая-строка» —  строка,  которая  печатается  в  случае,  когда  сообщение  этого  класса
       обрабатывается fmtmsg().

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌───────────┬──────────────────────┬────────────────────────────────────────────────────────────────────┐
       │ ИнтерфейсАтрибутЗначение                                                           │
       ├───────────┼──────────────────────┼────────────────────────────────────────────────────────────────────┤
       │ fmtmsg()  │ Безвредность в нитях │ glibc >= 2.16: MT-Safe; glibc < 2.16: MT-Unsafe                    │
       └───────────┴──────────────────────┴────────────────────────────────────────────────────────────────────┘

       До  glibc  2.16 функция fmtmsg() использовала статическую незащищённую переменную, поэтому функцию нельзя
       использовать в нескольких нитях одновременно.

       Начиная с glibc 2.16 функция fmtmsg() использует блокировку для защиты  статической  переменной,  поэтому
       функцию можно использовать в нескольких нитях одновременно.

СТАНДАРТЫ

       fmtmsg()
       MSGVERB
              POSIX.1-2008.

ИСТОРИЯ

       fmtmsg()
              System V.  POSIX.1-2001 and POSIX.1-2008.  glibc 2.1.

       MSGVERB
              System V.  POSIX.1-2001 and POSIX.1-2008.

       SEV_LEVEL
              System V.

       В  справочных страницах System V и UnixWare указано, что эти функции были заменены на «pfmt() и addsev()»
       или «pfmt(), vpfmt(), lfmt() и vlfmt()», и будут впоследствии удалены.

ПРИМЕРЫ

       #include <fmtmsg.h>
       #include <stdio.h>
       #include <stdlib.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: Смотрите mount(8).  util-linux:mount:017

       а после

           MSGVERB=text:action; export MSGVERB

       вывод станет:

           неизвестный параметр mount
               TO FIX: Смотрите mount(8).

СМОТРИТЕ ТАКЖЕ

       addseverity(3), perror(3)

ПЕРЕВОД

       Русский перевод этой страницы  руководства  разработал(и)  Azamat  Hackimov  <azamat.hackimov@gmail.com>,
       Dmitry    Bolkhovskikh    <d20052005@yandex.ru>,    Yuri   Kozlov   <yuray@komyakino.ru>,   Иван   Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                  15 июня 2024 г.                                       fmtmsg(3)