1
2
我不是百分之百确定是什么问题,但首先:
无效。 这是因为inputStream.available()没有阻塞,所以如果它没有任何东西可以立即读取,那么它根本不会读取任何东西。 你最好有这样的东西:
read()正在阻塞,因此,这样它实际上将继续读取,直到流正确关闭。 (注意:这段代码来自Groovy的consumerprocessoutput()实现) |
2
1
这可能意味着“管道破裂”错误。当管道连接的一个进程在另一个管道之前退出时,可能会发生这种情况。 |
3
1
我一生中见过好几次,找到了两个解决办法。
ProcessBuilder b=新的ProcessBuilder(“foo.sh”); b、 重定向错误流(真); 进程p=b.start(); p、 getInputStream(); //..... 等。 现在从同时包含stdout和stderr的输入流中读取。 |
4
0
我有一个类似的问题,在一个线程中执行进程,这个线程的run方法会读取进程InputStream,然后调用waitFor()方法。 正如OP所做的那样,我将进程的读取移动到自己的线程中,不再看到中断的管道出口代码返回。 |
John Smith · Java按值对映射进行分组,其中值为列表 2 年前 |
r3k0j · 在c++中有没有办法将输入字符串转换为输入流? 2 年前 |
Ankur · 猛击猫管据称行为不端 2 年前 |
Ksenia Alexeeva · 什么是产量控制器。流动 2 年前 |
tooFastForSatan · 组合两个流并调用方法 2 年前 |
Logan Lee · 通过在jq中一对一比较两个流进行过滤 2 年前 |
Lev · 使用jOO按属性总结BigDecimal分组 6 年前 |