Как получить сообщение об ошибке для значения errno в python? - PullRequest
4 голосов
/ 21 октября 2011

Я использую модуль ctypes для выполнения некоторых системных вызовов ptrace в Linux, которые на самом деле работают довольно хорошо.Но если я получаю ошибку, я хочу предоставить некоторую полезную информацию.Поэтому я выполняю вызов функции get_errno () , который возвращает значение errno, но я не нашел ни одной функции или чего-то еще, что интерпретирует значение errno и выдает мне сообщение об ошибке.

Я что-то упустил?Есть ли решение на основе ctypes?

Вот мои настройки:

import logging
from ctypes import get_errno, cdll
from ctypes.util import find_library, errno

# load the c lib
libc = cdll.LoadLibrary(find_library("c"), use_errno=True)
...

Пример:

 return_code = libc.ptrace(PTRACE_ATTACH, pid, None, None)
 if return_code == -1:
   errno = get_errno()
   error_msg = # here i wanna provide some information about the error
   logger.error(error_msg)

Ответы [ 2 ]

4 голосов
/ 21 октября 2011

Это печатает ENODEV: No such device.

import errno, os

def error_text(errnumber):
  return '%s: %s' % (errno.errorcode[errnumber], os.strerror(errnumber))

print error_text(errno.ENODEV)
1 голос
/ 02 апреля 2014
>>> import errno
>>> import os
>>> os.strerror(errno.ENODEV)
'No such device'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...