【发布时间】:2013-01-07 03:35:33
【问题描述】:
让我解释一下我的软件。我的软件所做的只是创建 10 个线程并为每个线程分配一些任务。然后每个线程创建一个运行时进程,该进程将启动一个 cmd 批处理文件,该文件又将启动一个程序,该程序将远程登录到一个设备(我有大约 200 个)以轮询其配置。这是我的流程创建的代码:
Process p1 = java.lang.Runtime.getRuntime().exec("cmd /c start /b /wait " + batchFile);
int returnVal = p1.waitFor();
batchFile 是批处理文件的完整路径。不要误会我的意思,该软件在 100% 的执行情况下都可以正常工作,并且它只有一次在 95% 左右时挂起,所以我正在尝试寻找解决方案。为什么挂起不是我现在的问题,而是以后如何处理挂起..!
现在的问题是我需要等待进程完成,因为我的 telnet 客户端将写入一个文件,我稍后将在线程中读取该文件;因此使用 .waitFor() 。我的问题是如何让线程了解外部程序挂起?换句话说,我可以给外部程序一些时间限制来完成吗?如果没有,线程会杀死进程吗?
我还阅读了有关读取错误和输出流的信息;但是,我认为它不适用于这里,不是吗?
【问题讨论】:
-
“我也读过有关读取错误和输出流的信息;但是,我认为它不适用于这里,或者是吗?” 很可能是的。消费它们并显示它们。
-
TBH,我没有尝试过,因为我假设它们不会因为
waitfor()而使用。不会只调用一次吗?
标签: java process runtime.exec process-exit