У меня есть приложение Java, которое запускает другое приложение Java (стороннего) в фоновом режиме, поэтому перед запуском стороннего фонового приложения я хочу проверить, запущено ли это приложение или нет (не хотите дождаться завершения этого заявление).
Я использую следующий код для запуска приложения стороннего Java:Проверить, работает ли приложение или нет с помощью java?
String path = new java.io.File("do123-child.cmd").getCanonicalPath();
Runtime.getRuntime().exec(path);
Примечание: Файл «do123-child.cmd» называют «.bat» файл для запуска этого приложения.
Чтобы проверить, является ли данное приложение работает или нет, я использую следующий код [Ref link]:
boolean result = false;
try {
String line;
Process p = Runtime.getRuntime().exec("tasklist.exe");
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
if(line.startsWith("myApp.exe")){
result = true;
break;
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
return result;
Я хочу знать, есть ли другой способ сделать это без Итерируя все процессы в настоящее время работает ? Как:
Process p = Runtime.getRuntime().exec("tasklist /FI \"IMAGENAME eq myApp.exe\" /NH");
int exitVal = p.exitValue();
//if above code throw "java.lang.IllegalThreadStateException" means application is running.
но выше код возврата 0 для всех приложений.
Заранее спасибо.
@MichaelLaffargue: В данной ссылке (вами) код ждать окончания процесса/приложения, но в моем случае я не хочу ждать окончания приложение, я просто хочу знать, работает ли приложение или нет. – BhushanK
My Bad @Bhushan. 'tasklist' - это способ пойти в Windows (если вы не хотите использовать [JNA] (https://github.com/twall/jna)) –
@MichaelLaffargue: На самом деле я не хочу использовать' JNA' как мой приложение предназначено как для окон, так и для MAC, выше код будет работать как для меня, так и для меня просто изменить команду '" tasklist.exe "на mac specific, значит, команда будет определяться в соответствии с типом ОС, но логика будет похожа на t пробовал этот код на MAC). – BhushanK