Hallo,
ich habe aus Übungszwecken mit Java ein kleines "fake" Terminal geschrieben. Dort kann man Befehle eingeben und diese werden an eine Runtime übergeben und dann ausgeführt. Die Ausgabe des Befehls wird ber Scanner wieder eingelesen und im Java-Programm angezeigt. Mehr oder weniger identisch wie das Terminal/Windows Kommandozeile.
Im großen und ganzen funktioniert alles schon so wie es soll, nur wenn ich einen Befehl ausführe der eine Eingabe fordert (z.b. date möchte das neue Datum haben) friert das Java-Programm ein.
Mich würde jetzt interessieren wie man die Methode abändern muss das die Eingabe abgefragt wird oder ob das an der Runtime selbst liegt.
Das sollte der entscheidende Teil sein.
ich habe aus Übungszwecken mit Java ein kleines "fake" Terminal geschrieben. Dort kann man Befehle eingeben und diese werden an eine Runtime übergeben und dann ausgeführt. Die Ausgabe des Befehls wird ber Scanner wieder eingelesen und im Java-Programm angezeigt. Mehr oder weniger identisch wie das Terminal/Windows Kommandozeile.
Im großen und ganzen funktioniert alles schon so wie es soll, nur wenn ich einen Befehl ausführe der eine Eingabe fordert (z.b. date möchte das neue Datum haben) friert das Java-Programm ein.
Mich würde jetzt interessieren wie man die Methode abändern muss das die Eingabe abgefragt wird oder ob das an der Runtime selbst liegt.
Das sollte der entscheidende Teil sein.
Java:
public static String cmd(String befehl) throws IOException {
data = "";
// Kommandozeile aufrufen und befehl übergeben
Process proc = Runtime.getRuntime().exec( "cmd /c "+befehl);
// Den Ausgabestream einlesen
Scanner s = new Scanner( proc.getInputStream() );
// Ausgabestream in einen String schreiben
while(s.hasNextLine()){
data = data+s.nextLine()+"\n";
}
data = "Ausgeführter Befehl: "+befehl+"\n\n"+data;
return data;
}
Zuletzt bearbeitet: