Когда вы запускаете подпроцесс с Java , вы получаете a Process
объект , соответствующий запущенному процессу.Вы можете использовать метод destroy()
для объекта Process
, чтобы убить запущенную команду.
Таким образом, вы начнете ее с:
Process p = Runtime.getRuntime().exec(new String[] {"tail","-f","test.log"});
и убьетеэто с:
p.destroy();
Если вы просто читаете новые строки, добавленные в файл, рассматривали ли вы сделать это изначально в Java?Чтение файла довольно просто:
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
приведенный выше код не обрабатывает файл, который переписывается с самого начала, а не добавляется, но вы можете это исправить.