Ниже приведен следующий пример кода. Если вы можете ввести команду в оболочку bash i.e. echo test
и вернуть результат обратно. Однако после первого чтения. Другие выходные потоки не работают?
Почему это или я делаю что-то неправильно? Моя конечная цель - создать запланированную запланированную задачу, которая периодически выполняет команду в / bash, поэтому OutputStream
и InputStream
должны работать в тандеме и не прекращать работу. Я также испытываю ошибку java.io.IOException: Broken pipe
любые идеи?
Спасибо.
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);
}