【问题标题】:How to get an error message for errno value in python?如何在python中获取errno值的错误消息?
【发布时间】:2011-12-12 02:20:30
【问题描述】:

我正在使用 ctypes 模块在 Linux 上进行一些 ptrace 系统调用,这确实有效 很不错。但是如果我得到一个错误,我想提供一些有用的信息。因此我 执行一个返回 errno 值的 get_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)

【问题讨论】:

标签: python linux ctypes errno system-calls


【解决方案1】:
>>> import errno
>>> import os
>>> os.strerror(errno.ENODEV)
'No such device'

【讨论】:

    【解决方案2】:

    这打印出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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2011-05-26
      • 2014-10-27
      • 2015-12-21
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多