这是我的主文件:
import subprocess, time
pipe = subprocess.PIPE
popen = subprocess.Popen('pythonw -uB test_web_app.py', stdout=pipe)
time.sleep(3)
这是 test_web_app.py:
import web
class Handler:
def GET(self): pass
app = web.application(['/', 'Handler'], globals())
app.run()
当我运行主文件时,程序会执行,但是一个僵尸进程挂起,我必须手动杀死它。为什么是这样?程序结束时如何让 Popen 死掉?只有当我在程序结束前通过管道输出标准输出并休眠一段时间时,Popen 才会挂起。
编辑——这是主文件的最终工作版本:
import subprocess, time, atexit
pipe = subprocess.PIPE
popen = subprocess.Popen('pythonw -uB test_web_app.py', stdout=pipe)
def kill_app():
popen.kill()
popen.wait()
atexit.register(kill_app)
time.sleep(3)