.\" -*- coding: UTF-8 -*- .\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" Distributed under GPL .\" %%%LICENSE_END .\" .\" adapted glibc info page .\" .\" This should run as 'Guru Meditation' (amiga joke :) .\" The function is quite complex and deserves an example .\" .\" Polished, aeb, 2003-11-01 .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH FMTMSG 3 "9 июня 2020 г." "" "Руководство программиста Linux" .SH ИМЯ fmtmsg \- выводит отформатированные сообщения об ошибках .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint fmtmsg(long \fP\fIclassification\fP\fB, const char *\fP\fIlabel\fP\fB,\fP \fB int \fP\fIseverity\fP\fB, const char *\fP\fItext\fP\fB,\fP \fB const char *\fP\fIaction\fP\fB, const char *\fP\fItag\fP\fB);\fP .fi .SH ОПИСАНИЕ Эта функция выводит сообщение, описываемое аргументами, на устройство(а), заданное в аргументе \fIclassification\fP. Для сообщений, записываемых в \fIstderr\fP, формат зависит от переменной окружения \fBMSGVERB\fP. .PP В аргументе \fIlabel\fP задаётся источник сообщения. Строка должна состоять из двух частей, разделённых двоеточиями; первая часть должна быть не более 10 символов, а вторая часть — не более 14. .PP В аргументе \fItext\fP описывается условие ошибки. .PP В аргументе \fIaction\fP описываются возможные шаги по исправлению ошибки. Если они выводятся, то начинаются с «TO FIX: ». .PP В аргументе \fItag\fP указывается ссылка на онлайн\-документацию, в которой можно найти дополнительную информацию. Он должен содержать значение \fIlabel\fP и уникальный идентификационный номер. .SS "Фиктивные аргументы" Каждый аргумент может иметь фиктивное значение. Для фиктивного значения классификации (classification) \fBMM_NULLMC\fP (0L) ничего не выводится, то есть ничего не печатается. Фиктивное значение важности (severity) \fBNO_SEV\fP (0) указывается, если важность не определена. Значения \fBMM_NULLLBL\fP, \fBMM_NULLTXT\fP, \fBMM_NULLACT\fP, \fBMM_NULLTAG\fP являются синонимами \fI((char\ *)\ 0)\fP — пустой строки, а \fBMM_NULLSEV\fP — синоним \fBNO_SEV\fP. .SS "Аргумент классификации" Аргумент \fIclassification\fP — это сочетание значений, описывающих 4 типа информации. .PP Первое значение определяет канал вывода. .TP 12n \fBMM_PRINT\fP Вывод в \fIstderr\fP. .TP \fBMM_CONSOLE\fP Вывод в системную консоль. .TP \fBMM_PRINT | MM_CONSOLE\fP Вывод в оба места. .PP Вторым значением описывается источник ошибки. .TP 12n \fBMM_HARD\fP Произошла аппаратная ошибка. .TP \fBMM_FIRM\fP Произошла ошибка в микропрограмме. .TP \fBMM_SOFT\fP Произошла ошибка в программном обеспечении. .PP В третьем значении кодируется выявитель проблемы. .TP 12n \fBMM_APPL\fP Обнаружено приложением. .TP \fBMM_UTIL\fP Обнаружено утилитой. .TP \fBMM_OPSYS\fP Обнаружено операционной системой. .PP В четвёртом значении показывается важность инцидента: .TP 12n \fBMM_RECOVER\fP Это исправимая ошибка. .TP \fBMM_NRECOV\fP Это неисправимая ошибка. .SS "Аргумент важности" В аргументе \fIseverity\fP можно указать одно из следующих значений: .TP 12n \fBMM_NOSEV\fP Важность не печатается. .TP \fBMM_HALT\fP Это значение печатается как ОСТАНОВ. .TP \fBMM_ERROR\fP Это значение печатается как ОШИБКА. .TP \fBMM_WARNING\fP Это значение печатается как ПРЕДУПРЕЖДЕНИЕ. .TP \fBMM_INFO\fP Это значение печатается как ИНФОРМАЦИОННОЕ. .PP Числовые значения от 0 до 4. Используя функцию \fBaddseverity\fP(3) или переменную окружения \fBSEV_LEVEL\fP вы можете добавить дополнительные уровни и строки для печати. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Функция может возвращать 4 значения: .TP 12n \fBMM_OK\fP Всё хорошо. .TP \fBMM_NOTOK\fP Всё плохо. .TP \fBMM_NOMSG\fP Ошибка записи в \fIstderr\fP. .TP \fBMM_NOCON\fP Ошибка записи в консоль. .SH ОКРУЖЕНИЕ Переменная окружения \fBMSGVERB\fP (message verbosity — детальность сообщения) может использоваться для отключения некоторых частей вывода в \fIstderr\fP (она не влияет на вывод на консоль). Если эта переменная определена, не равна NULL и содержит список допустимых ключевых слов через двоеточие, то печатаются только части сообщения, которые соответствуют этим ключевым словам. Допустимые ключевые слова: «label», «severity», «text», «action» и «tag». .PP Переменная окружения \fBSEV_LEVEL\fP может использоваться для ввода новых уровней важности. По умолчанию, доступно только пять уровней важности, описанных выше. Для любого другого числового значения \fBfmtmsg\fP() ничего не печатает. Если пользователь задал \fBSEV_LEVEL\fP в формате .PP .RS SEV_LEVEL=[описание[:описание[:...]]] .RE .PP в окружении процесса перед первым вызовом \fBfmtmsg\fP() и каждое описание имеет вид .PP .RS ключевое\-слово\-важности,уровень,печатаемая\-строка .RE .PP то \fBfmtmsg\fP() также будет обрабатывать заданные значения уровней (в дополнении к стандартным уровням 0\(en4), и использовать указанную строку печати, когда встречается такой уровень. .PP Часть «ключевое\-слово\-важности» не используется \fBfmtmsg\fP(), но указывается. Часть «уровень» — это строка, представляющая число. Числовое значение должно быть числом более 4. Это значение должно использоваться в аргументе важности \fBfmtmsg\fP() для выбора этого класса. Невозможно заменить любой из предопределённых классов. «Печатаемая\-строка» — строка, которая печатается в случае, когда сообщение этого класса обрабатывается \fBfmtmsg\fP(). .SH ВЕРСИИ Функция \fBfmtmsg\fP() появилась в glibc начиная с версии 2.1. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lbw23 l l l. Интерфейс Атрибут Значение T{ \fBfmtmsg\fP() T} Безвредность в нитях T{ glibc >= 2.16: MT\-Safe .br glibc < 2.16: MT\-Unsafe T} .TE .PP До glibc 2.16 функция \fBfmtmsg\fP() использовала статическую незащищённую переменную, поэтому функцию нельзя использовать в нескольких нитях одновременно. .PP .\" Modified in commit 7724defcf8873116fe4efab256596861eef21a94 Начиная с glibc 2.16 функция \fBfmtmsg\fP() использует блокировку для защиты статической переменной, поэтому функцию можно использовать в нескольких нитях одновременно. .SH "СООТВЕТСТВИЕ СТАНДАРТАМ" Функции \fBfmtmsg\fP() и \fBaddseverity\fP(3), и переменные окружения \fBMSGVERB\fP и \fBSEV_LEVEL\fP впервые появились в System V. .PP Функция \fBfmtmsg\fP() и переменная окружения \fBMSGVERB\fP описана в POSIX.1\-2001 и POSIX.1\-2008. .SH ЗАМЕЧАНИЯ В справочных страницах System V и UnixWare указано, что эти функции были заменены на «pfmt() и addsev()» или «pfmt(), vpfmt(), lfmt() и vlfmt()», и будут впоследствии удалены. .SH ПРИМЕРЫ .EX #include #include #include int main(void) { long class = MM_PRINT | MM_SOFT | MM_OPSYS | MM_RECOVER; int err; err = fmtmsg(class, "util\-linux:mount", MM_ERROR, "неизвестный параметр mount", "Смотрите mount(8).", "util\-linux:mount:017"); switch (err) { case MM_OK: break; case MM_NOTOK: printf("Нечего печатать\en"); break; case MM_NOMSG: printf("Нечего печатать в stderr\en"); break; case MM_NOCON: printf("Нет вывода на консоль\en"); break; default: printf("Неизвестная ошибка fmtmsg()\en"); } exit(EXIT_SUCCESS); } .EE .PP Вывод должен быть таким: .PP .in +4n .EX util\-linux:mount: ERROR: unknown mount option TO FIX: Смотрите mount(8). util\-linux:mount:017 .EE .in .PP а после .PP .in +4n .EX MSGVERB=text:action; export MSGVERB .EE .in .PP вывод станет: .PP .in +4n .EX неизвестный параметр mount TO FIX: Смотрите mount(8). .EE .in .SH "СМ. ТАКЖЕ" \fBaddseverity\fP(3), \fBperror\fP(3) .SH ЗАМЕЧАНИЯ Эта страница является частью проекта Linux \fIman\-pages\fP версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу \%https://www.kernel.org/doc/man\-pages/. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .