windows xp运行环境下,调用外部exe时没有释放资源

westwin 2005-04-22 10:24:47
1.操作系统:windows xp 2002 professional +sp1
2.jre: 1.4.2_05 版本
3.问题描述如下:
通过Runtime.getRuntime().exec(...)调用外部exe程序,程序执行完毕后,发现有些资源(文件句柄\ Device\NamedPipe\Win32Pipes.......)没有释放.而在windows 2k professional时都释放了.由于是周期性的调用该exe,所以时间久了,就会出现java.io.IOException:Bad File Descriptor
4.大致代码如下:
String cmd = "bin" + File.separator + "nmap -sP " + subNet+ " -T Insane";
Runtime rt = Runtime.getRuntime();
InputStream is = null;
InputStreamReader isr = null;
BufferedReader bufferedReader = null;
Process process = rt.exec(cmd);
is = _process.getInputStream();
isr = new InputStreamReader(is);
bufferedReader = new BufferedReader(isr);
while (bufferedReader.readLine()) != null) {
}
process.waitFor();
is.close();
isr.close();
br.close();
process.destroy();


请教大家,可能引起问题的原因,是不是和操作系统密切相关?
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
topil 2005-04-25
  • 打赏
  • 举报
回复
while (bufferedReader.readLine()) != null) {
}
退出循环就表示结束进程了吧
MARS.nEIL 2005-04-25
  • 打赏
  • 举报
回复
process.destroy();
当进程没执行完,它就会被终止..怎么样才能得知进程执行完呢?
westwin 2005-04-25
  • 打赏
  • 举报
回复
进程执行时间8长,nmap -T Insane 这样可以设置timeout.
同样的在2k professional + SP4 没这种事.
偶现在用jre1.5.0测试,等程序跑个30几小时再看.
jFresH_MaN 2005-04-25
  • 打赏
  • 举报
回复
process.destroy();
你已经调用了这个,应该就已经结束了进程啊

是不是你的进程执行时间比较长
jFresH_MaN 2005-04-25
  • 打赏
  • 举报
回复
晕,慢慢看呢
topil 2005-04-25
  • 打赏
  • 举报
回复
那就给我吧, :)
帮顶
westwin 2005-04-25
  • 打赏
  • 举报
回复
没人理啊,那拉到!
分全给第二个回复的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧