我有一个 python 程序,它将在新终端中创建并执行另一个 python 脚本。为此,我使用了 subprocess.Popen。我正在尝试使用 .pid 获取新进程的 PID。但是,这个 pid 的值似乎与新创建进程的真实 pid 不匹配(两个值不匹配)。
这是我的代码示例:
from subprocess import Popen
p = Popen("gnome-terminal -e 'python'",shell = True)
print p.pid
在新打开的终端中,我尝试使用以下方法获取 pid:
import os
print os.getpid()
我得到两个不同的值。有谁知道如何获得正确的pid?我需要知道第二个过程何时完成,以便在第一个过程中执行操作。
感谢您的帮助!
如果您需要更多详细信息,请告诉我:)
最佳答案
However, the value of this pid doesn't seem to match the real pid of the newly created process (the two values don't match).
这里有三个进程: shell=True
使 /bin/sh
运行 运行 gnome-terminal
运行 python
(可能是间接的)。 gnome-terminal
可能只是一个启动程序,它将启动 python
委托(delegate)给正在运行的服务器进程并退出。
shell=False
在这里无济于事。您将获得 gnome 终端的 pid 而不是 /bin/sh
——您不会获得 python
进程的 pid。
您可以将 pid 写入已知文件或通过管道/套接字进行通信。
关于python - 获取在另一个终端中执行的 python 进程的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738375/