Есть ли какая-либо функция в UNIX для преобразования errno в соответствующую строку, например. EIDRM к "EIDRM". Его очень раздражает отладка, чтобы проверять ошибки с этими целыми ошибками.
Как преобразовать errno в UNIX в соответствующую строку?
Ответ 1
strerror()
должен это сделать. http://linux.die.net/man/3/strerror
FYI, так что вы можете легко найти эти вещи сами: если вы наберете man errno (или какую-либо функцию, которую вы исследуете), и посмотрите на самую нижнюю часть страницы руководства, вы увидите список связанных функций. Если вы man
каждый из них (угадывая, о каком из них делать сначала в зависимости от их имен), вы часто найдете ответ на аналогичные вопросы.
Ответ 2
Простое решение, которое точно решает проблему, но в Python вместо C:
>>> import errno
>>> errno.errorcode[errno.EIDRM]
'EIDRM'
Ответ 3
Теперь есть утилита errno, распространяемая с пакетом moreutils.
Ответ 4
Я не уверен в таких именах enum
-style, но для целей отладки и сообщений об ошибках вы можете использовать perror(3)
или strerror(3)
Функции C, возвращающие человеко-читаемое представление кода ошибки. Более подробную информацию см. на страницах руководства.
Ответ 5
Если вы действительно хотите EIDRM, а не строку ошибки: no. Однако, на OpenBSD,
man errno|egrep ' [0-9]+ E[A-Z]+'|sed 's/^ *//'|cut -d' ' -f1,2
выводит красивую таблицу "...\n89 EIDM\n...", которую вы можете преобразовать далее в структуру данных для языка программирования, в который вы хотели бы включить эту функцию.