我需要以用戶可以與剛啓動的程序進行交互的方式啓動外部可執行文件。使用流重定向從Java代碼啓動外部可執行文件
例如在OpenSuse Linux中有一個包管理器 - Zypper。你可以在命令模式下啓動zypper,並給它安裝,更新,刪除等命令。
我想以一種用戶可以與之交互的方式從Java代碼運行它:輸入命令並查看他開始的程序的輸出和錯誤。
這裏是一個Java代碼中,我試圖用:
public static void main(String[] args) throws IOException, InterruptedException {
Process proc = java.lang.Runtime.getRuntime().exec("zypper shell");
InputStream stderr = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
char ch;
while ((ch = (char)br.read()) != -1)
System.out.print(ch);
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
}
但不幸的是,我只能看到它的輸出:
zypper>
但不管我寫的東西,我的輸入不影響開始的程序。 我該怎麼做才能做到?
謝謝您的回答。這有幫助! – 2010-11-20 14:07:33