我在下面有下面的代碼示例。因此,您可以向bash shell輸入一條命令,即echo test
並返回結果。但是,在第一次閱讀之後。其他輸出流不起作用?帶輸入/輸出流的Java進程
爲什麼這樣做還是我做錯了什麼?我的最終目標是創建一個Threaded計劃任務,定期執行一個命令到/ 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);
}
「破管」可能意味着子進程已退出。沒有完全查看剩下的代碼來查看其他問題。 – vanza 2010-09-04 20:59:49
使用 單獨的線程,它將工作得很好 – Johnydep 2011-12-08 11:07:03