Внутри моей программы я вызываю процесс 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 запускается, корректно завершается, и моя программа работает как надо. Но .... иногда он не выходит и просто сидит, потребляя процессор. Мне нужен способ убить его. Я также пытался добавить это, прежде чем я вызову его, но это не сработало:
Process killGetData = Runtime.getRuntime().exec("pkill -9 getData");
killGetData.destroy();
Я предполагаю, что, возможно, я застреваю во внутреннем цикле while ().
Любые мысли, идеи и советы с благодарностью получены. Большое спасибо заранее
John