我想从Python脚本中调用两个.jar文件。但是,在我调用第一个jar之后,终端就位,并且在服务器运行之后不会处理任何事情。服务器启动正常,但我想启动另一个将运行的进程,直到我要求它们停止。
我在寻找可能的解决方案时遇到了麻烦,因为我不确定要使用什么术语。
from subprocess import call
import glob
import sys
h2 = glob.glob("h2*.jar")
reasoner = glob.glob("reasoner*.jar")
h2 = h2.pop()
reasoner = reasoner.pop()
call(["java", "-jar", h2, "-tcp"]) # Any call commands after this point don't execute
答案 0 :(得分:0)
使用等待子流程终止的subprocess.Popen
代替subprocess.call
。
from subprocess import Popen
...
Popen(["java", "-jar", h2, "-tcp"])
仅供参考,Python documentation是一个值得关注的地方,尤其是subprocess
module documentation这个特定问题。
<强>更新强>
如果您想在使用Popen
时明确等待子流程,请保存对Popen对象的引用并使用wait
方法:
proc = Popen(["java", "-jar", h2, "-tcp"])
# Do something else ..
proc.wait() # block execution until the sub-process terminate.