当前位置: 首页 > 面试题库 >

Java process.waitFor()从不返回

洪宇定
2023-03-14
问题内容
Process process = Runtime.getRuntime().exec("tasklist");
BufferedReader reader = 
    new BufferedReader(new InputStreamReader(process.getInputStream()));
process.waitFor();

问题答案:

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

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

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

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

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



 类似资料:
  • 我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):

  • 编辑:在测试用例5中,任务似乎处于状态。 我在.NET 4.5中使用System.net.http.HttpClient时遇到了一些奇怪的行为--其中“等待”调用的结果(例如)将永远不会返回。 只有在使用新的Async/Await语言功能和任务API的特定情况下才会出现这种情况--代码似乎总是在只使用延续时工作。

  • 我为A队按了3分,现在当我从seconActivity回来时,分数显示为0 但是分数仍然是3,因为我把分数作为静态的,所以当我再次按下3按钮时,分数变成了6,但是为什么这里显示为0

  • 我试图在lambda函数中的特定时间戳之后从动觉流中读取记录。我得到碎片,碎片迭代器,然后是数据<当我得到第一个迭代器时,我得到数据,并使用NextShardIterator(返回的数据中存在)递归地调用同一个函数。根据文档,当没有更多数据可读取且达到$latest时,NextShardIterator将返回null<但它从不返回null,函数不断被调用,最终我得到了配置吞吐量超过异常<我还尝试使

  • 问题内容: 我将慢速的WebSockets服务器包装在AngularJS服务中,然后从我的控制器调用该服务。如果我将回调链接到回调上,则一切正常,所有UI均异步更新。 当我尝试用来清理一团糟的回调时,似乎我的延迟请求从未被调用。我熟悉从Python的Twisted派生的概念,因此我认为从概念上讲一切都应该起作用-但事实并非如此。 这是我能想到的最短的例子,慢速的WebSockets服务器是使用se

  • 我有一个if语句,它递归地调用自己在二叉查找树中查找值。 当我试图编译程序时,它会因为结尾没有return语句而感到不安。程序最终应该命中一个return语句,但为了使其编译,我在最后添加了一个return语句。但是程序总是从该语句返回,即使它在else-if语句中表示to。我知道它到达了那个语句,但我不知道为什么它没有从那个语句中返回。