Список названий доступных сигналов в системе
Хочу вывести на экран список всех сигналов, доступных в системе, как это делает kill -l. Знаю два способа: 1. Рекомендуемый в signal.h:
void print_signals() {
for(int i = 0;i<NSIG;i++) {
printf("%d %s\n", i, strsignal(i));
}
}
2. Более универсальный
void print_signals() {
for(int i = 0;i<NSIG;i++)
{
printf("%d %s\n", i, sys_siglist[i]);
}
}
Естественно, не обращаем внимание на отсутствие проверок и тп. Так вот, и тот и другой способ в linux выдает не название сигналов(SIGHUP, SIGINT, SIGQUIT, SIGILL, ....), а их описание: 1 Hangup 2 Interrupt 3 Quit 4 Illegal instruction 5 Trace/breakpoint trap
Беглый осмотр исходников kill показал, что список имен сигналов в ней зашит физически. Скорее всего такой подход себя оправдывает, но, возможно, есть какой-то способ получить список имен без зашивания его в код? Например, названия в netbsd и linux немного отличаются, не хотелось бы городить огород из defineов.