我有一个测试脚本需要打开一个进程(一个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,所以我无法访问该功能。如果我只是让脚本结束当然服务器继续存在。在脚本退出之前,我应该怎么做才能关闭/终止该进程?
答案 0 :(得分:1)
考虑将subprocess.py复制到python2.4 dist-packages目录。它应该工作,因为它是旧的popen库的简单包装。
Popen对象终止函数只执行以下操作:
导入操作系统,信号
os.kill(pid,signal.SIGKILL)
pid是子进程的进程ID。 signal.SIGKILL是数字9,是标准的unix终止信号。您可以看到如何使用popen模块here生成子进程并在python 2.4中获取其pid:
答案 1 :(得分: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)