python2,如何将PID为117135进程作为子进程attatch到PID为868518进程上? 换一种方法
时间: 2024-03-12 13:46:01 浏览: 160
另一种将一个进程作为子进程 attach 到另一个进程上的方法是使用 gdb。在 Python 2 中,可以使用 pexpect 模块来实现与 gdb 的交互。
具体步骤如下:
1. 首先要获取两个进程的 PID,可以使用 `os.getpid()` 函数获取当前进程的 PID。
2. 使用 pexpect 模块启动 gdb 进程,并使用 `gdb.attach(pid)` 函数将需要 attach 的进程 attach 到 gdb 进程上。
3. 使用 pexpect 模块向 gdb 进程发送命令,将需要 attach 的进程 attach 到另一个进程上。
4. 使用 pexpect 模块向 gdb 进程发送命令,将 attach 的进程从 gdb 进程中 detach。
以下是示例代码:
```python
import os
import pexpect
# 获取两个进程的 PID
pid1 = 117135
pid2 = 868518
# 启动 gdb 进程,并将需要 attach 的进程 attach 到 gdb 进程上
gdb = pexpect.spawn("gdb")
gdb.expect("gdb")
gdb.sendline("attach {}".format(pid1))
gdb.expect("Attached.*")
gdb.expect("gdb")
# 将需要 attach 的进程 attach 到另一个进程上
gdb.sendline("call ptrace(attach, {}, 0, 0)".format(pid2))
gdb.expect("Continuing.*")
gdb.expect("gdb")
# 将 attach 的进程从 gdb 进程中 detach
gdb.sendline("call ptrace(detach, {}, 0, 0)".format(pid1))
gdb.expect("Continuing.*")
gdb.expect("gdb")
# 结束 gdb 进程
gdb.sendline("quit")
gdb.expect(pexpect.EOF)
```
注意:以上代码仅供参考,具体实现方式需要根据实际情况进行调整。同时需要注意可能存在的权限问题。
阅读全文