我有一个 python 脚本,使用 subprocess
模块调用 java 文件:
import subprocess
java_cmd = ['java', '-cp', 'bin/stuff/:lib/asm-all-3.3.jar:lib/jdom.jar',
'ch.idsia.scenarios.Main']
subprocess.call(java_cmd, shell=False)
print "Hello world"
这工作正常,然后 java 文件等待 python 脚本继续并连接套接字,正如我所希望的那样。但 python 脚本不会继续。为什么不?我知道事实并非如此,因为 print
语句永远不会执行。
当我从 Eclipse 手动运行 java 文件,然后从命令行执行 python 脚本时,一切都按预期运行。
我还尝试使用 subprocess.Popen()
而不是 subprocess.call()
,结果没有任何差异。
最佳答案
谢谢@KSFT; subprocess.call()
在命令完成之前不会返回,但 subprocess.Popen()
会返回。因此,我使用 subprocess.Popen()
进行调用,然后使用 time.sleep(0.5)
进行调用。让 python 脚本等待 0.5 秒可以让 java 文件有足够的时间打开和初始化套接字连接。
关于java - Python 脚本在调用子进程后不继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29464145/