Когда вы start a subprocess with Java вы получите обратно a Process
object соответствующий запущенному процессу , Вы можете использовать destroy()
method on the Process
object, чтобы убить запущенную команду.
Таким образом, вы бы начать его с:
Process p = Runtime.getRuntime().exec(new String[] {"tail","-f","test.log"});
и убить его:
p.destroy();
Если вы просто читаете новые строки добавляются в файл, вы рассмотрели делать это изначально в Ява? Чтение файла довольно прост:
try {
BufferedReader input = new BufferedReader(new FileReader("tail.log"));
while (true) {
String line;
while ((line = input.readLine()) != null) {
//You'll probably want to do something other than println()
System.out.println(line);
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
break;
}
}
input.close();
}
catch (IOException ioe) {
//Handle this
}
Вы, вероятно, хотите, чтобы запустить это в другом Thread
. И в отличие от tail -f
приведенный выше код не обрабатывает файл, который переписывается с самого начала, а не прилагается к нему, но вы можете это исправить.