Python 2 中的``个性(2)``

``personality(2)`` in Python 2

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

背景: 我有一个遗留程序调用的顽固库,我只能 在 Python 包装部分打补丁。 (不要问。)不幸的是 该库的行为取决于 uname -m 的结果。这 这个运行的环境 非常 受限,所以我们不能假设 普通用户域存在。 (如果我能包起来就好了 setarch(8) 中的脚本调用,但这不可行。)

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

import ctypes

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

print(personality(0xffffffff))