Как я могу получить человекочитаемое описание от числа сигнала?

Три точки для создания здесь:

  • Во-первых, существует минимальная потеря производительности в фактическом наличии блоков try-catch в Вашем коде. Это не должно быть соображением, стараясь избегать наличия их в Вашем приложении. Хит производительности только играет роль, когда исключение выдается.

  • то, Когда исключение выдается в дополнение к операциям раскручивания стека и т.д., которые происходят, какие другие упомянули Вас, должно знать, что целый набор связанного с временем выполнения/отражением материала происходит для заполнения членов класса исключений, таких как объект отслеживания стека и различные участники типа и т.д.

  • , я полагаю, что это - одна из причин, почему общие рекомендации, если Вы собираетесь повторно бросить исключение, ко всего throw;, а не выдайте исключение снова или создайте новое как в тех случаях, все те данные стека повторно собраны, тогда как в простом броске это все сохраняется.

6
задан Norman Ramsey 12 November 2009 в 02:16
поделиться

2 ответа

Да, что интересно, в POSIX есть стандартный способ получить строковое сообщение из сигнала. Совершенно случайно это strsignal () . Из POSIX.1-2008:

Функция strsignal () должна отображать номер сигнала в signum в строку, определяемую реализацией, и должна возвращать указатель на нее. Он должен использовать тот же набор сообщений, что и функция psignal ().

Среда, которая не предоставляет вам эту функцию, несовместима с POSIX. Хотя относительно новый (Выпуск 7 вышел в 2008 году), у меня есть справочная страница для strsignal () в Mac OS X , так что это хороший знак.

10
ответ дан 9 December 2019 в 20:45
поделиться

Определенный извне массив sys_siglist содержит описания сигналов для каждого номера сигнала и является стандартным для BSD.

#include <signal.h>

extern const char *const sys_siglist[];
2
ответ дан 9 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: