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

发布于 12-11 08:27 字数 684 浏览 0 评论 0原文

我正在使用 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)

I am using the ctypes module to do some ptrace system calls on Linux, which actually works
pretty well. But if I get an error I wanna provide some useful information. Therefore I
do an get_errno() function call which returns the value of errno, but I didn't found
any function or something else which interprets the errno value and gives me an associated
error message.

Am I missing something?
Is there a ctypes based solution?

Here is my setup:

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)
...

Example:

 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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

左耳近心2024-12-18 08:27:42

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

This prints 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)
得不到的就毁灭2024-12-18 08:27:42
>>> import errno
>>> import os
>>> os.strerror(errno.ENODEV)
'No such device'
>>> import errno
>>> import os
>>> os.strerror(errno.ENODEV)
'No such device'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文