Java-Prozess mit Eingabe- / Ausgabestream
Ich habe das folgende Codebeispiel unten. Wobei Sie einen Befehl in die Bash-Shell eingeben können, d. H.echo test
und das Ergebnis wird zurückgemeldet. Allerdings nach dem ersten Lesen. Andere Ausgabestreams funktionieren nicht?
Warum ist das oder mache ich etwas falsch? Mein Endziel ist es, eine geplante Threaded-Aufgabe zu erstellen, die regelmäßig einen Befehl an / bash ausführt, damit dasOutputStream
undInputStream
müsste zusammenarbeiten und nicht aufhören zu arbeiten. Ich habe auch den Fehler erlebtjava.io.IOException: Broken pipe
irgendwelche Ideen
Vielen Dank
String line;
Scanner scan = new Scanner(System.in);
Process process = Runtime.getRuntime ().exec ("/bin/bash");
OutputStream stdin = process.getOutputStream ();
InputStream stderr = process.getErrorStream ();
InputStream stdout = process.getInputStream ();
BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
String input = scan.nextLine();
input += "\n";
writer.write(input);
writer.flush();
input = scan.nextLine();
input += "\n";
writer.write(input);
writer.flush();
while ((line = reader.readLine ()) != null) {
System.out.println ("Stdout: " + line);
}
input = scan.nextLine();
input += "\n";
writer.write(input);
writer.close();
while ((line = reader.readLine ()) != null) {
System.out.println ("Stdout: " + line);
}