Reputation: 93
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
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