2011-07-18 96 views
0

当我试图在Linux shell中运行以下shell脚本,从Java执行Linux的sh文件与参数文件作为输入,写输出到.txt文件

cd /home/fpalma/Project/resources/yices/linux64bit/ 
bash 
chmod a+x yices 
./yices /home/fpalma/Project/out/SMT.ys > /home/fpalma/Project/out/SMT.txt 

正在运行和发电该文本文件作为yices可执行文件的输出。但是,当我从Java中使用的代码运行相同的shell脚本,

String command = mainGUI.PROJECT_PATH+"resources/"+"yices.sh"; 
process = Runtime.getRuntime().exec(command); 
process.waitFor(); 

String command = mainGUI.PROJECT_PATH+"resources/"+"yices.sh"; 
pb = new ProcessBuilder(command); 
run = Runtime.getRuntime(); 
Process p = pb.start(); 

它也运行,但不会退出,除非我退出Java编译器本身,它不生成文本输出文件。有什么建议么???

目标:我的目标是使用输入参数文件从java运行可执行文件,然后使用'>'运算符生成输出文本文件。

+0

你在脚本文件中调用'bash'的目的是什么? – marc

+0

如果您的命令产生大量输出并且您没有读取它,则可能会停止执行,直到您读取输出为止。尝试重定向输出和/或从过程对象(它连接到子过程的输出流)上可用的getInputStream()中读取。 – Lynch

回答

0

你的“命令”变量应该包含完整的命令,即: mainGUI.PROJECT_PATH +“resources /”+“yice​​s.sh /home/fpalma/Project/out/SMT.ys>/home/fpalma/Project /out/SMT.txt“