2017-11-02 3 views
0

Wenn ich mein Java-Programm in einem O nativen Terminal (cmd.exe oder xterm) starten, ist es möglich:öffnen Sie zwei Terminals zum Lesen und Schreiben

  1. den aktuellen Terminal zum Lesen Halten/Schreiben als System.in und System.out
  2. öffnen sie einen weiterer Terminal zum Lesen/Schreiben als NewTerm.in und NewTerm.out

wie es aussieht, alles, was ich kann scheinen zu tun ist, öffnet das zweite Endgerät. Ich kann nicht schreiben (ich habe es mit BufferedWriter versucht) und die einzige Möglichkeit, Befehle anzuzeigen, ist, wenn diese Befehle mit seiner Öffnung ausgegeben wurden (d. H. oder ProcessBuilder(command).start(); wobei command ein String[] ist).

Ich möchte die beiden Terminals offen halten, damit ich ihre Ausgänge vergleichen kann. Die Sequenz wäre wie folgt:

  • Run-Programm in ersten Anschluß
  • Spawn zweiten Anschluss
  • Befehl ausgibt in ersten Anschluß
  • Ausgabe-Befehl in zweitem Anschluss
  • erster Anschluss Ausgang
  • Lese
  • Lesen Sie die zweite Terminal-Ausgabe

Ist dies möglich le?

Hier ist, wie ich ein neues Terminal geöffnet, kann aber nicht, um es nach dem Öffnen schreiben:

public class InterFace { 
    public static void main(String[] args) { 
     try { 
      Process p = Runtime.getRuntime().exec("xterm"); 
      BufferedWriter w = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); 

      w.write("ls"); 
      w.flush(); 
      w.close(); 

      BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 

      String s; 
      while ((s = r.readLine()) != null) { 
       System.out.println(s); 
      } 
     } 
     catch (IOException io) { 
      io.printStackTrace(); 
     } 
    } 
} 

Antwort

1

Sie müssen die Linientrenner nach dem Befehl.

w.write("ls" + System.lineSeparator()); 
Verwandte Themen