我的Java程序使用ProcessBuilder(redirectErrorStream设置为true)并且有一个循环来运行进程的inputstream的read方法,该方法是阻塞的.我正在调用的外部程序停止等待输入和stdin.我现在想杀死这个过程.这是不是由(在一个单独的线程中)调用进程的destroy方法,并调用inputstream的close方法来阻止read方法阻塞,以便我的初始线程可以结束它的生命?
由于某种原因process.getInputStream().close()块.从JavaDoc我不明白为什么会发生这种情况.此外,我不明白为什么javadoc说"InputStream的close方法什么都不做".(链接到javadoc)有人可以解释一下吗?
谢谢 :-)
关于阻塞行为,Java 中有一个已知问题,在与另一个进程通信时可能会导致死锁。我不知道这是否是您所看到的,但值得研究。java.lang.Process的文档说:
由于某些本机平台只为标准输入输出流提供有限的缓冲区大小,因此未能及时写入子进程的输入流或读取子进程的输出流可能会导致子进程阻塞,甚至死锁。
| 归档时间: |
|
| 查看次数: |
7310 次 |
| 最近记录: |