在我的程序中,我调用一个 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() 循环。
任何想法,想法和提示都非常感激。提前谢谢了
约翰