otwieranie powłoki i interakcja z jej I / O w java

Próbuję otworzyć powłokę (xterm) i wchodzić z nią w interakcję (pisać polecenia i czytać dane wyjściowe powłoki)

Oto przykład kodu, który nie zadziała:

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

Kiedy wykonuję ten program, otwiera się okno „xterm” i nie wpisuje się polecenia „ls”. Dopiero gdy zamknę okno, otrzymuję „-1” i nic nie jest odczytywane z powłoki

WAŻNY-

Wiem, że mogę po prostu użyć:
Proces pr = new ProcessBuilder ("ls"). Start ();

Aby uzyskać wyjście, ale potrzebuję „xterm” otwartego dla innych zastosowań

Wielkie dzięki

questionAnswers(2)

yourAnswerToTheQuestion