2015-06-15 43 views
0

这是对我已发布here已解析的帖子的扩展。我有一个python script其在它下面的jar执行代码(非常久远一些其他的代码):从另一个Python脚本调用的Python脚本执行.jar文件时出错,作为子进程

python_file2.py

import os 
cmd_txt = "ssh -i pem_file.pem [email protected]" + host_name + " 'cd /user/folder1/ && java -cp jar-file.jar'" 
os.system(cmd_txt) 

现在这个python script文件(python_file2.py)被称为一个subprocess从另一个python script

Main_script.py

ret = subprocess.Popen([sys.executable,"python_file2.py"]) 

当我运行这个Main_script.py那么jar文件从python_file2.py执行似乎变得忌用。当我单独运行第一个脚本时,它可以正常工作,但是当我尝试将其作为subprocess执行时,jar执行挂起并超时。

subprocess脚本内部执行这个jar执行会被吊死的可能原因是什么?我所要做的就是运行一个jar文件,该文件从一个运行为subprocess的python脚本内部出现在远程机器上。

回答

0

使用subprocess.call,而不是subprocess.Popen

ret = subprocess.call([sys.executable,"python_file2.py"]) 
assert not ret, ret 
+0

有什么区别呢'subprocess.call'从'subprocess.Popen'可能导致这种行为提供? – user2966197

+0

如果我是正确的'subprocess.call'反过来调用'subprocess.Popen'的权利? – user2966197

+0

任何人都可以指出subprocess.call从subprocess.Popen提供的可能导致解决问题的区别吗? – user2966197

相关问题