Код: Выделить всё
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
Мобильная версия