一尘不染

Java process.waitFor()从不返回

java

Process process = Runtime.getRuntime().exec("tasklist");
BufferedReader reader = 
    new BufferedReader(new InputStreamReader(process.getInputStream()));
process.waitFor();

阅读 1285

收藏
2020-03-07

共1个答案

一尘不染

有很多原因waitFor()不回来。

但这通常归结为以下事实:执行的命令不会退出。

同样,这可能有很多原因。

一个普遍的原因是该过程产生了一些输出,而你没有从适当的流中读取。这意味着一旦缓冲区已满,进程就会被阻塞,并等待你的进程继续读取。你的进程依次等待另一个进程完成(之所以不会,是因为它等待你的进程,…)。这是一个典型的僵局情况。

你需要不断从流程输入流中读取内容,以确保它不会被阻塞。

2020-03-07