Код: Выделить всё
ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
В Java с использованием процесса.destroy(); я получаю код состояния «1», что означает ненормальное завершение. Я получаю статус:
Код: Выделить всё
processToExecute.destroy();
processToExecute.exitValue(); //This return me status '1'
Когда я пытаюсь удалить файл после его завершения, я получаю:
Действие не может быть выполнено, поскольку файл открыт в FFMPEG.exe
Это означает, что процесс не завершает команду. Он все еще занимает этот файл, поэтому я не могу его воспроизвести. Процесс завершается, когда я вызываюprocessToExecute.destroy();, но задача все еще активна.
Если я нажимаю CTRL+C или Q в командной строке, она успешно завершается и не отображается в списках процессов. Когда я программно вызываю cmd>processToExecute.destroy();, он завершается, но я все еще вижу его в списке выполняющихся процессов, точно так же, как когда я завершаю это с помощью Taskkill или kill в другой командной строке, указав имя или PID (завершается ненормально). Я использую команду Tasklist, чтобы убедиться, что метод Destroy() из приложения и команда Taskkill или Kill не завершает процесс обычно, как это делает CTRL+C или Q.
Подробнее здесь: https://stackoverflow.com/questions/279 ... essbuilder
Мобильная версия