Как получить сообщение об ошибке для значения errno в python?

100
9

Я использую модуль 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)

спросил(а) 2021-01-19T19:20:55+03:00 6 месяцев, 1 неделя назад
1
Решение
90

Отпечатает 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)

ответил(а) 2021-01-19T19:20:55+03:00 6 месяцев, 1 неделя назад
63

>>> import errno
>>> import os
>>> os.strerror(errno.ENODEV)
'No such device'

ответил(а) 2021-01-19T19:20:55+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема