Книга: Разработка приложений в среде Linux. Второе издание

12.3.1. Описание сигналов

12.3.1. Описание сигналов

Иногда приложения нуждаются в описании сигнала для отображения пользователю или помещения в журнал. Существуют три способа сделать это (см. главу 9). К сожалению, ни один из них не стандартизован.

Самый старый метод предусматривает применение sys_siglist — массива строк, описывающих каждый сигнал, проиндексированного номерами самих сигналов. Он включает описания всех сигналов за исключением сигналов реального времени. Применение sys_siglist более переносимо, чем прочие методы, описанные ниже. В системах BSD предусмотрена функция psignal(), которая является сокращенным способом отображения сообщений. Вот как выглядит версия psignal().

#include <signal.h>
#include <stdio.h>
void psignal(int signum, const char *msg) {
 printf("%s: %sn", msg, sys_siglist[signum]);
}

Следует отметить, что эта функция использует тот же список сигналов, что и sys_siglist, поэтому сигналы реального времени также исключаются.

Библиотека GNU С, используемая Linux, предлагает еще один метод — strsignal(). Эта функция не входит ни в какой стандарт, поэтому для доступа к файлу прототипа нужно определить _GNU_SOURCE.

#define _GNU_SOURCE
#include <signal.h>
char *strsignal(int signum);

Подобно sys_siglist, strsignal() также представляет описание сигнала по номеру signum. Он использует sys_siglist для большинства сигналов и конструирует описания для сигналов реального времени. Например, SIGRTMIN + 5 будет описан как "Real-time signal 5". Пример использования strsignal() можно найти в строках 639–648 и 717 файла ladsh4.с, приведенного в приложении Б.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.344. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз