Ich verwende die Laufzeit, um Eingabeaufforderungsbefehle von meinem Java-Programm auszuführen. Mir ist jedoch nicht bekannt, wie ich die vom Befehl zurückgegebene Ausgabe erhalten kann.
Hier ist mein Code:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
Ich habe es versucht, System.out.println(proc);
aber das brachte nichts zurück. Die Ausführung dieses Befehls sollte zwei durch ein Semikolon getrennte Zahlen zurückgeben. Wie könnte ich dies in einer Variablen zum Ausdrucken bringen?
Hier ist der Code, den ich jetzt verwende:
String[] commands = {"system.exe", "-get t"};
Process proc = rt.exec(commands);
InputStream stdIn = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdIn);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
Aber ich bekomme nichts als meine Ausgabe, aber wenn ich diesen Befehl selbst ausführe, funktioniert es gut.
pwd && ls
führt nicht nur eine einzelne Datei aus, wenn Sie dies in einer Shell tun, werden sowohl die/bin/pwd
als auch die/bin/ls
ausführbaren Dateien ausgeführt. Wenn Sie solche Dinge in Java tun möchten, müssen Sie so etwas tun{"/bin/bash","-c", "pwd && ls"}
. Sie haben die Frage wahrscheinlich nicht mehr, aber andere Leute könnten es tun, also dachte ich, ich könnte sie beantworten.