Ade*_*eeb 0 java process stream
我在使用Java运行多个进程时遇到问题.
我有一个从向量运行进程的循环cmds,它当前运行第一个进程,然后第二个进程挂起.
ProcessBuilder proc = null;
for (String cmd:cmds){
proc = new ProcessBuilder(cmd.split("\\s"));
Process p = proc.start();
//Handle streams
//in
Scanner stdin = new Scanner(p.getInputStream());
while(stdin.hasNextLine()){
System.out.println(stdin.nextLine());
}
//err
Scanner stderr = new Scanner(p.getErrorStream());
while(stderr.hasNextLine()){
System.out.println(stderr.nextLine());
}
//wait
p.waitFor();
}
Run Code Online (Sandbox Code Playgroud)
这个答案对我来说显然不起作用,因为我从每个进程的InputStream和ErrorStream中读取过.我有什么误会?
我怎样才能解决这个问题?
注意:我删除了我拥有的try块,因为它在这个示例代码中没有用处
编辑
proc = new ProcessBuilder(cur_string.split("\\s"));
proc. redirectErrorStream(true);
final Process p = proc.start();//Runtime.getRuntime().exec(cur_string);
//Handle streams
//in
new Thread(new Runnable(){
public void run(){
Scanner stdin = new Scanner(p.getInputStream());
while(stdin.hasNextLine()){
System.out.println(stdin.nextLine());
}
stdin.close();
}
}).start();
//wait
p.waitFor();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2390 次 |
| 最近记录: |