0

我有一个测试脚本需要打开一个进程(一个 Pyro 服务器),做一些事情来调用打开的进程以获取信息,当这一切都完成后,需要关闭进程。这都是登台服务器上自动化测试的一部分。

在 python 2.6 中,您可以这样做:

pyro_server = subprocess.Popen(['python', 'pyro_server.py'])
# Do stuff, making remote calls to the Pyro server on occasion
pyro_server.terminate()

唉,我在这里工作时被锁定在 python 2.4 中,所以我无法访问该功能。如果我只是让脚本结束,服务器当然会继续存在。在脚本退出之前,我应该怎么做才能关闭/杀死该进程?

4

2 回答 2

1
  1. 考虑将 subprocess.py 复制到您的 python2.4 dist-packages 目录。它应该可以工作,因为它是旧 popen 库的简单包装器。

  2. Popen 对象终止函数仅执行以下操作:

    导入操作系统,信号

    os.kill(pid,signal.SIGKILL)

pid 是子进程的进程 ID。signal.SIGKILL 是数字 9,是标准的 unix 终止信号。您可以在此处使用 popen 模块查看如何在 python 2.4 中生成子进程并获取其 pid :

于 2009-12-04T01:14:30.783 回答
0

@BrainCore:请注意 os.kill 在 python24 中的 Windows 上不可用,请查看文档。

我在使用 python24 时在 Windows 上杀死 subprocess.Popen 对象的解决方案是:

import os, subprocess
p = subprocess.Popen(...)
res = os.system('taskkill /PID %d /F' % p.pid)
于 2013-10-11T09:18:49.767 回答