#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(); повторите название процесса? запрашивается строка