Подтвердить что ты не робот

Как преобразовать errno в UNIX в соответствующую строку?

Есть ли какая-либо функция в UNIX для преобразования errno в соответствующую строку, например. EIDRM к "EIDRM". Его очень раздражает отладка, чтобы проверять ошибки с этими целыми ошибками.

4b9b3361

Ответ 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...", которую вы можете преобразовать далее в структуру данных для языка программирования, в который вы хотели бы включить эту функцию.