linux - Python 2 中的“个性(2)”
问题描述
我需要一种personality(2)
从 Python 2.7 程序调用的方法。我在 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))
推荐阅读
- javascript - Vue,来自 routerview 的内容隐藏
- python - 如何避免在满足条件之前推进循环?
- c# - How to upload more than 4MB in c# using Microsoft Graph API rest calls
- macos - 如何在 macOS 上释放 os_log_create() 返回的 os_log_t 类型?
- groovy - Groovy String 数组排序使用浮点值
- dependency-injection - 如何将路径配置从另一个服务注入到 ServeStaticModule 中?
- lua - 解码 Roblox 后门
- tapestry - 是否可以使用带有区域的页面链接
- ruby-on-rails - 如何仅使用正则表达式接受双“”
- unity3d - Unity Copy Movement base off faces