首页 > 解决方案 > Python 2 中的“个性(2)”

问题描述

我需要一种personality(2)从 Python 2.7 程序调用的方法。我在 cpython 源代码树中找不到提及,我该从哪里开始寻找?只要不添加任何依赖项,执行原始系统调用是可以接受的。

背景:我有一个由遗留程序调用的顽固库,我只能在 Python 包装器部分进行修补。(不要问。)不幸的是,图书馆的行为取决于uname -m. 它运行的环境非常受限,所以我们不能假设普通用户空间存在。(如果我可以将脚本调用包装进去就好了,setarch(8)但那是不可行的。)

标签: linuxpython-2.7system-calls

解决方案


您可以使用 ctypes 来完成,它是 Python 的一部分,因此不会添加任何依赖项:

import ctypes

personality = ctypes.CDLL(None).personality
personality.restype = ctypes.c_int
personality.argtypes = [ctypes.c_ulong]

print(personality(0xffffffff))

推荐阅读