Я застрял с довольно сложным модулем Python, который не возвращает полезные коды ошибок (он действительно терпит неудачу молча). Однако основная библиотека C, которую он вызывает, устанавливает errno.
Обычно errno входит в атрибуты OSError, но поскольку у меня нет исключения, я не могу получить его.
Используя ctypes, libc.errno не работает, потому что errno является макросом в GNU libc. Python 2.6 имеет некоторые преимущества, но Debian по-прежнему использует Python 2.5. Вставка модуля C в мою чистую программу Python просто для того, чтобы читать errno отвращает меня.
Есть ли способ доступа к errno? Решение Linux только прекрасно, поскольку обернутая библиотека - это только Linux. Мне также не нужно беспокоиться о потоках, так как я выполняю только один поток за время, в которое это может потерпеть неудачу.