subprocess.run()获取进程的pid

2024-06-07 19:01:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从Python脚本中运行一个程序,并获取我启动的进程的PID。我试过: p=subprocess.Popen(nameofmyprocess) pid=p.pid 但问题是它不会等待我调用的程序完成。当我查看文档时,我得出结论应该使用subprocess.run(),但是它没有类似.pidPopen 还有其他选择吗

编辑: 我应该在原来的问题中提到这一点。我的程序的代码包括一个服务器部分,它在其中打开一个套接字并侦听它。我有一个客户端连接到该套接字并发送消息。我的最终目标是编写一个脚本来运行我的程序,获取它的PID以将它传递给我编写的一些函数,这些函数将监视我的程序:它们将向我显示我的程序的内存使用情况、它打开的套接字以及文件描述符。。基本上是关于我的程序所做的事情的信息。 正如建议的那样,我使用了subprocess.Popen.poll,因此现在我的代码如下所示:

p=subprocess.Popen(nameofmyprocess) 
pid=p.pid
print pid
while (p.poll() is None):
   time.sleep(20)
   myFunc(pid)
   myFunc2(pid)

但是,当我运行此脚本并运行客户端时,它无法连接到服务器程序。上面写着“连接失败”。我很确定程序正在运行,因为当我在另一个终端上使用命令ps aux时,会显示我打印的PID


Tags: 函数run代码文档程序脚本编辑客户端

热门问题