我需要以用户可以与刚启动的程序进行交互的方式启动外部可执行文件。使用流重定向从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