Runtime exec, einfaches Bsp

                        Process pro = Runtime.getRuntime().exec("echo \"" + line + "\" >> teAusgabe.txt");
                        BufferedReader br2 = new BufferedReader(new InputStreamReader(pro.getInputStream()));
                        while ((line = br2.readLine()) != null) {
                            pw.println(line);
                        }```

da kommt zurück:

`"hallo" >> teAusgabe.txt`

wieso?

Betriebssystem: Linux.

Ich möchte einen bestimmten/beliebigen Text einer bestimmten Datei anhängen und lesen, falls es bei dem Aufruf eine Ausgabe gibt.

Indem du vielleicht das echo weglässt?
Kenne mich nicht mit Linux aus, aber unter Windows gibt man mit dem Befehl “echo” Text in der Konsole aus.

Das echo müsste richtig sein, evtl. die "-Zeichen?

Ungetestet, probier’ halt mal
Process pro = Runtime.getRuntime().exec("echo \\\"" + line + "\\\" >> teAusgabe.txt");

Danke, wahrscheinlich erwartet die bash dann einen zweiten Aufruf innerhalb von line?

Und wahrscheinlich wäre ein SSLServerSocket (mit dem TLS) empfohlen? (Anderes Thema)

Moin,

was auch immer da exec() noch intern macht. Nach meinem Verständniss sollte das erste Beispiel schon funktionieren. Wenn Du die Konsolen-Ausgabe eines Programms weiter verarbeiten willst/musst, dann ist der ProcessBuilder die bessere Wahl.

echo ist doch nur in einer shell verfügbar, das kann doch so gar nicht gehen

muss man doch bin /bin/sh oder so starten!

[QUOTE=Bleiglanz]echo ist doch nur in einer shell verfügbar, das kann doch so gar nicht gehen

muss man doch bin /bin/sh oder so starten![/QUOTE]

/bin/sh != cmd.exe - in letzteren ist echo enthalten

Ja, die Umleitung und das escaping der Argumente macht aber die Shell. So wie echo hier aufgerufen wird, bekommt es alle Argument übergeben, sodass auch alles, inkl. der Anführungszeichen und der >> ausgegeben wird.

Der Befehl müsste also in einer Shell ausgeführt werden. (Irgendwie mit sh -c <befehl> oder so…)

sry, hier stehts wieder:

linux - Why does my Java code execute bash command incorrectly? - Stack Overflow

er hat dasselbe Problem mit echo wie ich.

Kann denn noch jemand das

proc.waitFor();

erklären?

[quote=CyborgBeta]Kann denn noch jemand das

proc.waitFor();

erklären?[/quote]nicht besser als es die API-Doku kann.

bye
TT