如果外部程序挂起,如何退出进程(.exec())

时间:2013-01-23 15:38:34

标签: java process runtime.exec process-exit

让我解释一下我的软件。我的软件简单地做的是它创建10个线程并为每个线程分配许多任务。然后,每个线程创建一个运行时进程,该进程将启动一个cmd批处理文件,该文件将启动一个程序,该程序将远程登录到一个设备(我有大约200个)来轮询其配置。以下是我的流程创建代码:

Process p1 = java.lang.Runtime.getRuntime().exec("cmd /c  start /b /wait " + batchFile); 
int returnVal = p1.waitFor();

batchFile是批处理文件的完整路径。不要误解我的意思,该软件在执行过程中可以正常工作,并且在<95%的情况下只挂了一次,所以我试图为此找到解决方案。为什么它被绞死现在不是我的问题,而是以后如何处理挂断......!

现在的问题是我需要等待进程完成,因为我的telnet客户端将写入一个文件,我稍后将在该线程中阅读;因此使用.waitFor()。我的问题是如何让线程理解外部程序被挂起?换句话说,我可以给外部程序一些时间限制来完成;如果没有,线程将终止进程?

此外,我已阅读有关读取错误和输出流的信息;但是,我不认为它适用于此,或者是它?

0 个答案:

没有答案