4

Linux で ptrace システム コールを実行するためにctypesモジュールを使用していますが、これは実際にはかなりうまく機能します。しかし、エラーが発生した場合は、役立つ情報を提供したいと思います。したがって、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)
4

2 に答える 2

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)
于 2011-10-20T21:47:49.893 に答える
1
>>> import errno
>>> import os
>>> os.strerror(errno.ENODEV)
'No such device'
于 2014-04-02T12:44:00.993 に答える