打开shell并使用Java进行交互

时间:2014-02-17 07:05:50

标签: java bash shell processbuilder

我以前曾问同样的问题,但没有回答,并且发现了一些类似于此问题herehere的其他问题但又没有适当的答案。 任何人都可以帮我解决这个问题。我试图从Java打开一个shell并与之交互(编写命令并读取shell的输出)。这些命令将由用户给出,如更改目录,编译C程序等。命令列表不固定。

我也尝试过使用/ bin / bash -c方法以及以下方法。

Process p = new ProcessBuilder("xterm").start();

Process p = new ProcessBuilder("/bin/bash").start();

谢谢,我希望问题很清楚。

1 个答案:

答案 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());
}