我正在使用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)
解决方法:
这打印ENODEV:没有这样的设备.
import errno, os
def error_text(errnumber):
return '%s: %s' % (errno.errorcode[errnumber], os.strerror(errnumber))
print error_text(errno.ENODEV)