Hallo zusammen,
ich möchte aus meinem Java-Programm eine Shell starten und mit dieser kommunizieren:
Der PrintWriter schreibt leider nicht nach stdin meines Prozesses. Ich habe auch write() und flush() probiert. Alles ohne Erfolg. Hat jemand eine Idee, was ich falsch mache oder ist es gar nicht möglich, über Java interaktiv (schreiben und Ergebniss des Subprozesses lesen) mit einem gestarteten Subprozess zu kommunizieren (wie man das bspw. aus Python kennt).
Vielen Danke für eure Antworten!
Deness
ich möchte aus meinem Java-Programm eine Shell starten und mit dieser kommunizieren:
Java:
ProcessBuilder pb = new ProcessBuilder("xterm").redirectErrorStream(true);
try {
Process shell = pb.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(shell.getInputStream()));
PrintWriter writer = new PrintWriter(shell.getOutputStream(), true);
String input = "su - meinUser\n";
writer.println(input);
log.addInfo("error occurred: " + writer.checkError());
input = "meinPasswort\n";
writer.println(input);
log.addInfo("error occurred: " + writer.checkError());
// exit meinUser
input = "exit\n";
writer.println(input);
log.addInfo("error occurred: " + writer.checkError());
// exit xterm
input = "exit\n";
writer.println(input);
log.addInfo("error occurred: " + writer.checkError());
writer.close();
shell.destroy();
} catch (IOException e) {
log.addInfo("Error occurred while executing Linux command. Error Description: " + e.getMessage());
}
Der PrintWriter schreibt leider nicht nach stdin meines Prozesses. Ich habe auch write() und flush() probiert. Alles ohne Erfolg. Hat jemand eine Idee, was ich falsch mache oder ist es gar nicht möglich, über Java interaktiv (schreiben und Ergebniss des Subprozesses lesen) mit einem gestarteten Subprozess zu kommunizieren (wie man das bspw. aus Python kennt).
Vielen Danke für eure Antworten!
Deness