我以前问过同样的问题但没有答案,并且在这里和这里发现了一些与此类似的问题,但同样没有适当的答案。谁能帮我解决这个问题。我正在尝试从 Java 打开一个 shell 并与之交互(编写命令并读取 shell 的输出)。命令将由用户给出,例如更改目录,编译C程序等。命令列表不固定。
我也尝试并使用了/bin/bash -c 方法和以下方法。
Process p = new ProcessBuilder("xterm").start();
Process p = new ProcessBuilder("/bin/bash").start();
谢谢,我希望问题清楚。
可行解决方案的示例几乎如下所示
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());
}