在Mac OS X Lion上运行时,是否可以使用Python读取/写入另一个进程内存(不是Python进程,并且不使用共享内存或任何东西)?例如,我要启动Safari并监视Safari使用的多个内存地址.在Windows中,我找到了很多解决方案,但是...

在Mac OS X Lion上运行时,是否可以使用Python读取/写入另一个进程内存(不是Python进程,并且不使用共享内存或任何东西)?
例如,我要启动Safari并监视Safari使用的多个内存地址.
在Windows中,我找到了很多解决方案,但是可以在Mac OS X上完成吗?
解决方法:
是的,它可以.
当然,这不是直接的,但是您可以从Python调用所需的任何C API,方法是在C(或Pyrex等)中构建Python扩展模块,或者在Python中使用ctypes.
您要调用的特定C API是task_for_pid和mach_vm方法.这些方法的手册页在现代OS X中不存在,但是标题已得到了很好的记录(因此,源是现成的,很容易获得),您可以在线找到其他基于Mach的系统的手册页. ,并且有很多第三方文档.
有关概念的快速证明,请参见https://github.com/abarnert/pymach.您应该可以使用“ python setup.py build_ext –inplace”或“ sudo python setup.py install”来构建它,然后查看test.py以获得有关如何使用它的简单示例.
请记住,在现代OS X中,除非您是root用户,否则您只能访问子进程.解决此问题的最简单方法是让脚本实际启动Safari.或者,如果您无法执行此操作,只需对您的脚本进行sudo.另外,您也可以看中并使用ptrace附加到正在运行的进程,但这留给读者练习.
本文标题为:在OS X上运行的Python中读/写另一个进程内存


基础教程推荐
- Django把SQLite数据库转换为Mysql数据库的过程 2023-08-04
- Python爬虫Requests库的使用详情 2022-08-30
- Python Panda中索引和选择 series 的数据 2022-10-20
- 如何利用Python快速统计文本的行数 2023-08-04
- pandas学习之df.fillna的具体使用 2022-08-30
- 一篇文章带你了解kali局域网攻击 2023-08-04
- Python函数进阶与文件操作详情 2022-09-02
- python-此代码效率太低,如何增加内存和执行效率? 2023-11-13
- 如何使用MPI在Python中的进程之间共享数据? 2023-11-14
- 【网站】python的Windows平台的扩展包 2023-09-03