我有一个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?我需要知道第二个过程何时完成才能在第一个过程中执行操作。
感谢您的帮助!
如果您需要更多详情,请告诉我们:)
答案 0 :(得分:0)
答案 1 :(得分:0)
但是,此pid的值似乎与新创建的进程的实际pid相匹配(这两个值不匹配)。
此处有三个进程:shell=True
导致/bin/sh
运行gnome-terminal
运行python
(可能是间接的)。 gnome-terminal
可能只是一个启动程序,它将python
委托给正在运行的服务器进程并退出。
shell=False
在这里没有帮助。你将获得gnome-terminal的pid而不是/bin/sh
- 你不会得到python
进程' PID。
您可以在已知文件中编写pid或通过管道/套接字进行通信。