我以前曾问同样的问题,但没有回答,并且发现了一些类似于此问题here和here的其他问题但又没有适当的答案。 任何人都可以帮我解决这个问题。我试图从Java打开一个shell并与之交互(编写命令并读取shell的输出)。这些命令将由用户给出,如更改目录,编译C程序等。命令列表不固定。
我也尝试过使用/ bin / bash -c方法以及以下方法。
Process p = new ProcessBuilder("xterm").start();
Process p = new ProcessBuilder("/bin/bash").start();
谢谢,我希望问题很清楚。
答案 0 :(得分:1)
可行解决方案的示例几乎如下所示
Process process;
rt = Runtime.getRuntime();
try
{
process = rt.exec(new String[]{"bash","-c","ls -al /home/"});
log.warn("message to display");
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line=null;
while((line=input.readLine()) != null) {
log.warn(line);
}
int exitVal = process.waitFor();
log.warn("Exited with error code : "+ exitVal);
}
catch (IOException e)
{
log.warn("IO Execption 1 Happen : " + e.getMessage());
}
catch (Exception e)
{
log.warn("Execption Happen : " + e.getMessage());
}