abrindo um shell e interagindo com o seu I / O em java

Eu estou tentando abrir um shell (xterm) e interagir com ele (escrever comandos e ler a saída do shell)

Aqui está uma amostra de código que não funciona:

public static void main(String[] args) throws IOException {
    Process pr = new ProcessBuilder("xterm").start();
    PrintWriter pw = new PrintWriter(pr.getOutputStream());
    pw.println("ls");
    pw.flush();
    InputStreamReader in = new InputStreamReader(pr.getInputStream());
    System.out.println(in.read());
}

Quando executo este programa, uma janela "xterm" é aberta e o comando "ls" não é inserido. Somente quando eu fecho a janela eu recebo um "-1" impresso e nada é lido do shell

IMPORTANTE-

Eu sei que posso usar apenas:
Processo pr = new ProcessBuilder ("ls"). Start ();

Para obter a saída, mas eu preciso do "xterm" aberto para outros usos

Muito obrigado

questionAnswers(2)

yourAnswerToTheQuestion