如何在Python中获取errno值的错误信息?

6 投票
2 回答
5395 浏览
提问于 2025-04-17 04:43

我正在使用ctypes模块在Linux上进行一些ptrace系统调用,这实际上运行得很好。但如果出现错误,我想提供一些有用的信息。因此,我调用了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 个回答

1

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念或者使用了不合适的方法。

例如,假设你在写一个程序,想要让它做一些特定的事情,但它却没有按照你的想法去执行。这时候,你可能需要检查你的代码,看看是不是哪里写错了,或者有没有遗漏什么重要的步骤。

另外,编程语言有时候会有一些特定的规则或者语法,如果不遵循这些规则,代码就会出错。所以,了解这些基本的规则是非常重要的。

总之,编程就像是解决谜题一样,需要耐心和细心。遇到问题时,不要着急,慢慢分析,找出问题所在,通常就能找到解决办法。

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

这段代码会输出 ENODEV: 没有这样的设备

import errno, os

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

print error_text(errno.ENODEV)

撰写回答