【发布时间】:2010-10-14 08:06:16
【问题描述】:
在我的程序中,我调用一个 Linux 进程,读取该进程的输出,处理它,然后休眠直到下一次迭代。我遇到的问题是,即使我执行childProcess.destroy(),我调用的进程并不总是会死掉。代码如下:
while(true) {
Process childProcess = Runtime.getRuntime().exec("./getData");
InputStream input = childProcess.getInputStream();
BufferedReader inPipe = new BufferedReader(new InputStreamReader(input));
while((lineRead = inPipe.readLine()) != null) {
// do stuff
}
childProcess.destroy();
inPipe.close();
input.close();
}
在绝大多数情况下,./getData 会运行、优雅地退出,并且我的程序可以正常运行。但是....有时它不会退出,只是坐在那里消耗 CPU。我需要一种杀死它的方法。我也尝试在调用它之前添加它,但这不起作用:
Process killGetData = Runtime.getRuntime().exec("pkill -9 getData");
killGetData.destroy();
我猜我可能陷入了内部 while() 循环。
感谢您收到任何想法、想法和提示。非常感谢提前
约翰
【问题讨论】:
标签: java process runtime.exec