Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开shell并使用Java与进行交互_Java_Bash_Shell_Processbuilder - Fatal编程技术网

打开shell并使用Java与进行交互

打开shell并使用Java与进行交互,java,bash,shell,processbuilder,Java,Bash,Shell,Processbuilder,我以前也问过同样的问题,但没有答案,我还发现了一些与这个问题类似的问题,但同样没有合适的答案。 谁能帮我解决这个问题。我试图从Java打开一个shell并与之交互(编写命令并读取shell的输出)。命令将由用户发出,如更改目录、编译C程序等。命令列表不是固定的 我还尝试并使用了/bin/bash-c方法以及以下方法 Process p = new ProcessBuilder("xterm").start(); Process p = new ProcessBuilder("/bin/bash

我以前也问过同样的问题,但没有答案,我还发现了一些与这个问题类似的问题,但同样没有合适的答案。 谁能帮我解决这个问题。我试图从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());
}

您的Java程序应该是正在执行的shell的“控制器”,还是打算运行shell并提供用户与之交互的能力?我想在启动shell时重定向一些目录(Java将使用cd命令更改shell的目录)。一旦启动,我希望用户可以与之交互。如果你想启动一个活动外壳,你真的需要启动一个虚拟终端,仅仅外壳是不够的。shell只处理命令、启动进程并将它们绑定在一起,但它并不是在框中显示输出的东西。您能解释一下您需要它做什么吗?也许还有别的办法。有几个交互式shell的java实现,比如JavaShellRhino,我希望用java开发一个C程序分析器。对于正确的模块开发,如果用户可以通过自己提供的GUI编译和执行C代码,而无需单独打开bash终端,这将是非常有用的。这并不完全符合海报的要求,但我仍然认为它工作起来很酷。我已经尝试过这种方法,但仍然感谢您的尝试。