Код: Выделить всё
ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
Итак, если я выполню ту же операцию в своем Java-приложении, используя:
Код: Выделить всё
process.destroy(); //I call this method after 5 sec
Код: Выделить всё
processToExecute.destroy();
processToExecute.exitValue(); //This return me status '1'
Итак, как мне завершить процесс, созданный с помощью ProcessBuilder, так же, как мы делаем это в CMD с помощью (CTRL+C), чтобы я мог воспроизвести созданный медиафайл?
Я хочу завершить процесс (созданный с помощью ProcessBuilder) в Java-приложении с кодом состояния «2», который я получаю при завершении процесса с помощью CMD.
EDIT#01: --- Обмен результатами
Итак, когда я пытаюсь удалить этот файл после завершения работы приложения, я получаю следующую ошибку:
Код: Выделить всё
The Action Can't be Performed Because File is Opened in FFMPEG.exe
Код: Выделить всё
processToExecute.destroy();
EDIT#02: Совместное использование основной причины
На самом деле, если я напрямую нажимаю «CTRL+C» или «q» в cmd во время работы процесса, он успешно завершает процесс, и этот процесс больше не отображается в списках выполняющихся в данный момент процессов.
И программно, когда я вызываю метод:
Код: Выделить всё
cmd> processToExecute.destroy();
И тот же сценарий существует, если я попытаюсь завершить этот процесс с помощью команды «taskkill» или «kill» в другом CMD, указав их имя или pid, который все равно завершится ненормально.
P.S. Я использую следующую команду, чтобы увидеть запущенные процессы:
Код: Выделить всё
tasklist
Подробнее здесь: https://stackoverflow.com/questions/279 ... essbuilder
Мобильная версия