LINUX.ORG.RU

Как получить текстовое имя сигнала (2 -> «SIGINT»)?

 


0

1

Погрепал по /usr/include и не нашел там ничего подобного.

Неужто никто не заморачивался и в стандартную библиотеку не добавил столь важной функции const char *signame(int signo)?

Подскажите хоть, где скачать нечто подобное. Очень уж не хочется ручками формировать то, что явно уже 100 лет используется и кем-то сделано до меня!



Последнее исправление: OnlyAsk (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

У меня нет переменной sys_signame нигде в /usr/include. А функция strsignal() делает не то, что мне нужно!

Я хочу строку вида "SIGINT", а не "Interrupt"!

OnlyAsk
() автор топика
Ответ на: комментарий от OnlyAsk

Его переименовали, похоже. То, что он не объявлен, это не так важно, всегда можно самому объявить.

hateyoufeel ★★★★★
()
$ cat sig.sh 
macro_re="SIG[A-Z]+"
value_re="\d+|($macro_re)"
re="^#define\s+($macro_re)\s+($value_re)"

source_pat='  if (signal == $1) return \"$1\";\n'

echo '#include <signal.h>'
echo 'const char* signame(int signal) {'
echo '#include <signal.h>' | \
    cpp -fdirectives-only | \
    perl -ne "print \"$source_pat\" if /$re/"
echo '}'

PS. Есть мусор, но некритичный.

anonymous
()
Ответ на: комментарий от hateyoufeel

Список сигналов и их номера не стандартизированы.

Ах тыж пиздлявое говно! Даже в «голом» стандарте C перечислены некоторые сигналы (в т.ч. SIGINT), не говоря уже о POSIX.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.