import os
import time
import subprocess
p = subprocess.Popen(
['nohup', 'java', '=Xmx12G', '-jar', 'jar.jar', ' build', '../foo', ' inMemory']
stdout=open('/tmp/logOut.log', 'w'),
stderr=open('/tmp/logErr.log', 'w'),
preexec_fn=os.setpgrp
)
while True:
if 'Grizzly server running' in open('/tmp/logOut.log').read():
break
time.sleep(1)
有两个问题:
1.)subprocess.call()等待java服务器退出。
2.)当父进程(Python)停止时,通常会终止子进程
如果您仍然需要通过Python脚本实现,您可以在一个单独的进程组中运行java服务器,因此它与父进程(Python进程)是解耦的,父进程只在*nix操作系统上工作:
注意:如果要将管道插入Python脚本并且脚本退出,则需要将管道插入文件并在Python中读取它们,子进程将被终止(无论进程是否解耦)
相关问题 更多 >
编程相关推荐