Unix Man (Справочное руководство)


LOG(7) - часть 3


Область данных сообщения содержит формат - цепочку символов, оканчивающуюся нулем, за которым следуют выровненные по границе слова NLOGARGS слов, представляющих аргументы для этого формата.

Любой процесс, даже не являющийся обработчиком ошибок или трассировок, может посылать сообщения подобной структуры драйверу log. При этом в управляющей области сообщения в структуре log_ctl можно задать только поля level и flags, остальные поля перед передачей на обработку заполняет сам драйвер log. Область данных должна содержать формат, за которым, выравненные по границе слова, могут следовать до NLOGARGS слов, представляющих аргументы.

Попытка задания команд I_ERRLOG или I_TRCLOG, когда уже существует процесс-обработчик того же типа, приводит к ошибке с кодом ENXIO. Та же ошибка ENXIO выдается, если для команды I_TRCLOG не задан массив структур trace_ids, а также если третий аргумент в команде I_STR некорректен. Сообщения для драйвера log из программы пользователя, которые имеют неправильную структуру, игнорируются без сообщений об ошибках.

ПРИМЕРЫ

  1. Пример запроса на обработку сообщений об ошибках:

    struct strioctl ioc;

    ic.ic_cmd = IERRLOG; ic.ic_timeout = 0; /* Таймаут по умолчанию (15 с) */ ic.ic_len = 0; ic.ic_dp = NULL;

    ioctl (log, I_STR, &ioc);

  2. Пример запроса на обработку трассировочных сообщений:

    struct strioctl ioc; struct trace_ids tid [2];

    tid[0].ti_mid = 2; tid[0].ti_sid = 0; tid[0].ti_level = 1;

    tid[1].ti_mid = 1002; tid[1].ti_sid = -1; /* Любой */ tid[1].ti_level = -1; /* Любой */

    ic.ic_cmd = ITRCLOG; ic.ic_timeout = 0; ic.ic_len = 2 * sizeof (struct trace_ids); ic.ic_dp = (char *) tid;

    ioctl (log, I_STR, &ioc);

  3. Пример передачи сообщений драйверу log (без аргументов):

    struct strbuf ctl, dat; struct log_ctl lc; char *message = "I am waiting for you";

    ctl.len = ctl.maxlen = sizeof (lc); ctl.buf = (char *) &lc;

    dat.len = dat.maxlen = strlen (message) + 1; dat.buf = message;

    lc.level = 0; lc.flags = SL_ERROR | SL_NOTIFY;

    putmsg (log, &ctl, &dat, 0);

ФАЙЛЫ

/dev/log <sys/stropts.h> <sys/log.h> <sys/strlog.h>

СМ. ТАКЖЕ


, , .

, , , в Справочнике программиста.




Начало  Назад  Вперед