python2,已知两个进程的pid为1234和5678,如何将1234的进程作为子进程挂到5678进程上
时间: 2024-03-08 07:50:58 浏览: 63
在Python 2中,可以使用os模块下的fork()和setsid()方法来实现将一个进程作为子进程挂到另一个进程上。具体实现步骤如下:
```python
import os
parent_pid = 5678
child_pid = 1234
pid = os.fork()
if pid == 0:
# 子进程中,将自己设置为新的进程组组长,并将父进程的进程ID设置为自己的父进程ID
os.setsid()
os.setpgid(0, 0)
os.tcsetpgrp(0, os.getpgid(0))
# 切换到父进程的工作目录
os.chdir(os.path.join('/', 'proc', str(parent_pid), 'cwd'))
# 关闭不必要的文件描述符
os.close(0)
os.close(1)
os.close(2)
# 执行要挂载的进程
os.execlp('kill', 'kill', '-STOP', str(child_pid))
if pid > 0:
# 父进程中,等待子进程结束
os.waitpid(pid, 0)
```
在上面的代码中,我们首先获取了父进程和子进程的进程ID,然后使用os.fork()方法创建一个子进程。在子进程中,我们将子进程设置为新的进程组组长,并将父进程的进程ID设置为子进程的父进程ID。然后切换到父进程的工作目录,关闭不必要的文件描述符,最后使用os.execlp()方法执行要挂载的进程。
在父进程中,我们使用os.waitpid()方法等待子进程结束。这样就可以将一个进程作为子进程挂到另一个进程上了。
阅读全文