Как прекратить процесс, обычно созданный с помощью процесса -построенияJAVA

Программисты JAVA общаются здесь
Anonymous
Как прекратить процесс, обычно созданный с помощью процесса -построения

Сообщение Anonymous »

Я создаю процессы, используя процесс, в своем приложении Java. Созданный процесс выполняет некоторые команды FFMPEG, которые фактически копируют потоки RTSP в указанном файле назначения медиа -файла. < /P>

Код: Выделить всё

ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
< /code>
Я хочу закрыть процесс, прежде чем он завершит выполнение. Итак, если я запускаю эту команду FFMPEG непосредственно в CMD Windows, а затем нажимаю «Ctrl+C» через 5 секунд, затем обрабатывайте завершение с состоянием '2'. И я могу воспроизводить медиа -файл, созданный до сих пор. < /P>
Итак, если я выполняю ту же операцию в своем приложении Java, используя: < /p>
 process.destroy(); //I call this method after 5 sec
< /code>
Я получаю код состояния '1', что означает ненормальное прекращение. Я получаю статус следующим образом: < /p>
 processToExecute.destroy();
processToExecute.exitValue(); //This return me status '1'
< /code>
И я не могу воспроизводить файл медиа, и я думаю, что это связано с ненормальным завершением процесса. Приложение Java с кодом состояния '2', которое я получаю, когда я прекращаю процесс, используя CMD. < /P>
 Редактировать#01: --- Общие выводы < /h1>
Итак, когда я пытаюсь удалить этот файл после завершения приложения, я получаю следующую ошибку: < /p>
The Action Can't be Performed Because File is Opened in FFMPEG.exe
< /code>
Что означает, что процесс не завершает команду, которую он выполняет. Эта команда по -прежнему заняла этот файл, поэтому я не могу воспроизводить его. Процесс заканчивается, когда я звоню: < /p>
 processToExecute.destroy();
< /code>
Но задача, которую она выполняет (то есть выполнение команды), все еще активна. Странно !!!!cmd> processToExecute.destroy();
< /code>
Он завершает процесс, но когда я вижу список процессов выполнения в настоящее время, я все еще могу их видеть. Я использую следующую команду, чтобы увидеть процессы работы: < /p>
tasklist
Таким образом, из этого он доказывает, что метод Discoust () из приложения и команда «Taskkill или Kill» из другого CMD не завершает процесс, что нажатие «ctrl+c 'и' q делает.

Подробнее здесь: https://stackoverflow.com/questions/279 ... essbuilder

Вернуться в «JAVA»