如何在python中获取errno值的错误消息?

时间:2011-10-20 20:03:26

标签: python linux ctypes errno system-calls

我正在使用 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 个答案:

答案 0 :(得分:4)

这会打印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 :(得分:1)

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