python2 分别查询出inotify.py和jes-agent的PID,使用python的os模块和subprocess模块来实现将inotify作为子进程挂载到jes-agent进程上,该如何实现?
时间: 2024-03-05 11:49:24 浏览: 127
在 Python 2 中,我们可以使用 `os` 模块中的 `getpid()` 方法来获取当前进程的 PID,如下所示:
```python
import os
pid_inotify = os.getpid()
print "PID of inotify.py:", pid_inotify
```
接下来,我们可以使用 `subprocess` 模块来启动 `jes-agent` 进程,并且在该进程中挂载 `inotify.py` 进程作为子进程。我们可以使用 `subprocess.Popen()` 方法来启动 `jes-agent` 进程,并且使用 `stdin=subprocess.PIPE` 参数将标准输入流重定向到管道中,以便向该进程发送命令。我们还可以使用 `stdout=subprocess.PIPE` 参数将标准输出流重定向到管道中,以便从该进程读取输出。最后,我们可以使用 `communicate()` 方法向 `jes-agent` 进程发送命令,并且读取该进程的输出。如下所示:
```python
import subprocess
cmd = "jes-agent"
# Start jes-agent process
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
# Send command to mount inotify.py as child process
cmd = "mount %d" % pid_inotify
output, error = p.communicate(input=cmd)
# Print the output of jes-agent process
print output
```
在上面的代码中,我们首先定义了一个 `cmd` 变量,该变量包含我们要启动的 `jes-agent` 命令。然后,我们使用 `subprocess.Popen()` 方法启动该进程,并且将标准输入流和标准输出流分别重定向到管道中。接下来,我们构造了一个 `cmd` 变量,该变量包含了我们要向 `jes-agent` 进程发送的命令,该命令使用 `mount` 指令将 `inotify.py` 进程作为子进程挂载到 `jes-agent` 进程上。最后,我们使用 `communicate()` 方法向 `jes-agent` 进程发送命令,并且读取该进程的输出。
总的来说,我们可以使用以下代码来实现将 `inotify.py` 进程作为子进程挂载到 `jes-agent` 进程上:
```python
import os
import subprocess
pid_inotify = os.getpid()
print "PID of inotify.py:", pid_inotify
cmd = "jes-agent"
# Start jes-agent process
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
# Send command to mount inotify.py as child process
cmd = "mount %d" % pid_inotify
output, error = p.communicate(input=cmd)
# Print the output of jes-agent process
print output
```
阅读全文