2011-07-18 76 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「