具有输入/输出流的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();stdinBroken pipestdout
添加回答
举报
0/150
提交
取消
