具有输入/输出流的Java进程下面有下面的代码示例。可以向bashshell输入命令,即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);}
3 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
Thread T=new Thread(new Runnable() { @Override public void run() { while(true) { String input = scan.nextLine(); input += "\n"; try { writer.write(input); writer.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }} );T.start();
while ((line = reader.readLine ()) != null) { System.out.println ("Stdout: " + line);}

慕村225694
TA贡献1880条经验 获得超4个赞
writer.close();
stdin
Broken pipe
stdout
添加回答
举报
0/150
提交
取消