python - 获取在另一个终端中执行的 python 进程的状态

标签 python linux terminal subprocess popen

我有一个 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/

相关文章:

c# - 使用mono检查linux中的互联网连接?

linux - 在子目录中时如何从终端在 Linux 根目录中创建目录?

java - 将终端添加到 Swing 应用程序中

python - 对 API 包装器进行单元测试

python - 如何找到python模块的功能?

linux - linux 中的 flex 支持

linux - 为什么我的程序存储器写入速度比读取速度快?

从终端在 mac 中找不到 mysql 命令

python - 实现基于节点的图形界面?

python - Flask 循环未按预期在 Bootstrap 下拉菜单中迭代