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);
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage