Jan: Aus Programm externe Console steuern

Hallo,

Ich stehe momentan vor dem Problem das ich eine Console aus meinem Java Programm heraus aufrufen muss, bzw. die Console mit bestimmten Eingaben versorgen will, um die Ausgabe später abzufangen.

Also die Console zu starten ist kein Problem
.
.
.

Process p; // p ist global deklariert
p = rt.exec("c:/pfad/console.exe"); ....

die Ausgaben der Console abzufangen ist ebenfalls kein Problem ...
.
.
.

try {
                BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line;
                while ( (line = in.readLine()) != null ){
                  System.out.println(line);
                }
                in.close();
              }
              catch ....

die Ausgabe wird seperat in einem Thread abgefangen.

Nun zum eigentlich Problem, wenn ich jetzt einen Consolenbefehl über den OutputStream abschicken will, hängt sich die Console auf ;/

momentan sieht der Code aus wie folgt:
.
.
.
      try {
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
            p.getOutputStream() )
        );

out.write("befehl");
        out.close();
      }
      catch ....

Bin für jede Hilfe dankbar ;)

Ps: Ich muss die Befehle während der Laufzeit des externen Programmes eingeben können, nicht nur beim ersten start. Wie z.B. "p = rt.exec("cmd c/ dir")" ist nicht möglich.

Vielleicht noch ganz kurz, kann man eigentlich in Java die Console anstatt eines Hintergrund-Prozesses auch als Anwendung aufrufen ?

Mfg Jan

  1. Hi,

    try {
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
                p.getOutputStream() )
            );

    out.write("befehl");

    Da fehlt doch noch der Zeilenumbruch, wenn ich mich nicht irre...

    out.close();

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. out.write("befehl");

      Da fehlt doch noch der Zeilenumbruch, wenn ich mich nicht irre...

      out.close();

      cu,
      Andreas

      Hi Andreas,

      erstmal danke für die schnelle Antwort, leider geht es auch mit Zeilenumbruch nicht ...

      also z.B. "out.write("befehl" + '\n');" oder

      "out.write("befehl");
                 out.wirte(10); "

      hat nix gebracht, glaube ein Zeilenumbruch ist auch nicht von nöten, da der Befehl ja von der Console angenommen wird. Also z.B. ich schick "dir" an die console, dann werden alle Verzeichnisse/Dateien gelistet, aber danach kommt hunderte male direkt danach "Befehl nicht gefunden ... " und irgendwann stürzt die Console dann ab ;(

      Mfg Jan

      1. Hallo,

        Das Problem ist jetzt behoben ...

        Hab jetzt das "out.write(command);" durch "out.write(command + '\n')" und "out.close()" durch "out.flush()" ersetzt. Jetzt klappts ;P

        Mfg Jan