sol
sol

Reputation: 93

opening a shell and interact with using Java

I had previously asked the same question but with no answer, and have found some other questions similar to this problem here and here but again with no appropriate answers. Can anyone please help me out with this. I am trying to open a shell from Java and interact with it (write commands and read the shell's output). The commands will be given by the user like changing directory, compiling a C program etc. The command list is not fixed.

I have also tried and use the /bin/bash -c method and the following as well.

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

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

Thanks and I hope that the problem is clear.

Upvotes: 2

Views: 1430

Answers (1)

Saddam Abu Ghaida
Saddam Abu Ghaida

Reputation: 6729

Example of workable solution will be almost like below

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

Upvotes: 1

Related Questions