Как я могу получить удобочитаемое описание по номеру сигнала? - PullRequest
6 голосов
/ 12 ноября 2009

Предоставляет ли стандарт POSIX или другой стандарт C способ восстановления значимого сообщения из номера сигнала, так же, как strerror() позволяет восстановить сообщение из errno? Библиотека Gnu C имеет strsignal(), но если возможно, я бы хотел что-то переносимое в BSD и другие варианты Unix.

Ответы [ 2 ]

10 голосов
/ 12 ноября 2009

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

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

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

2 голосов
/ 12 ноября 2009

Внешний массив sys_siglist содержит описания сигналов для каждого номера сигнала и является стандартной проблемой BSD.

#include <signal.h>

extern const char *const sys_siglist[];
...