запуск исполняемого файла и затем ожидание, пока этот конкретный exe-файл больше не будет запущен

#java #javascript #process #exe

#java #javascript #процесс #exe

Вопрос:

Я хочу запустить исполняемый файл AHK, а затем заставить java дождаться, пока этот исполняемый файл завершит свой собственный процесс в конце своего скрипта, а затем продолжить, есть ли функция для отслеживания того, запущен ли конкретный exe-файл? И если он запущен, подождать, пока он не остановится?

например, в AHK вы могли бы сделать:

 IfExist, Appname, 
{
insert code
}
  

Я бы выполнил этот проект, используя только AHK, но поскольку AHK настолько ненадежен с переменными и увеличением, я не могу заставить его правильно работать с операторами IF и Else

или, если это вообще возможно, как я могу заставить Java приостановить себя на некоторое время

все, что я действительно ищу, это простой фрагмент кода для запуска .exe и немного кода fo для ожидания, пока он не исчезнет

Ответ №1:

Вы хотите прочитать о том, java.lang.ProcessBuilder как запустить exe-файл, а затем java.lang.Process.waitFor() дождаться завершения процесса. Если вы хотите передать данные процессу через его stdin или прочитать его стандартный вывод или stderr, тогда у вас есть гораздо более сложная задача, включающая потоки для обработки потоков, чтобы процесс не блокировался.

Комментарии:

1. нет, процесс, который я запускаю, полностью саморегулируется и выполняется на другом языке codign, все, что мне нужно, это запустить его, дождаться, пока этот процесс не прекратит существовать, затем продолжить выполнение основного сценария

2. также, если бы кто-нибудь мог предоставить некоторый код того, что я ищу, с чем-то вроде строк <вставить исполняемый файл здесь> на странице, где я указываю имя исполняемого файла и каталог, который был бы гораздо полезнее, чем простой просмотр здесь, сделайте это сами

3. 1 за правильные ссылки на API там. Я склонен использовать Runtime.getRuntime().exec(str) вместо new ProcessBuilder(str).start() . Однако я так и не понял, в чем разница между ними…

Ответ №2:

Это так же просто, как одна строка кода:

 Runtime.getRuntime().exec(<insert executable file here>).waitfor();
  

PS: Это всего лишь одна строка, поэтому я не возражал, но это не то место, где можно получить полный рабочий код от других. Обычный ответ: «посмотри здесь, сделай это сам», если только OP не публикует соответствующий код с отсутствующей небольшой частью, чего здесь нет.
PS2: Пожалуйста, рассмотрите возможность принятия ответа Джима, поскольку он был правильным.

Комментарии:

1. спасибо, я ожидал слишком многого от такой малости, спасибо за вашу помощь. также, что мне поместить в скобки для .waitfor(); повторите название процесса? запрашивается строка