Я запустил процесс (через java.lang.Runtime # exec, на Java 6, Linux), для которого мне нужен только стандартный вывод. К сожалению, программа, которую я запускаю (ffmpeg), настаивает на загромождении stderr информацией о прогрессе. Если я не читаю из stderr время от времени, буфер stderr заполняется, и через некоторое время процесс останавливается ..
По сути, я хочу отказаться от любого вывода из stderr. Мои предложения
1)
ffmpeg -i .... .... 2>/dev/null
Это работает, но означает, что мне нужно выполнить exec (String) вместо exec (String []), что означает, что я должен экранировать свои параметры, для которых в Java нет стандартной функции. Я мог бы построить один, но предпочел бы нет.
2)
Используйте приведенную выше команду ffmpeg в скрипте-оболочке, который перенаправляет вывод в / dev / null. Звучит хорошо, но сценарий bash только для этого кажется излишним.
3)
Также присоедините ErrorStream, запустите поток, который ничего не делает, кроме read () в потоке ошибок. Будет работать, но выглядит грязно ....
4)
Используйте Apache Commons Exec ... Я даже не проверял документацию, чтобы посмотреть, сработает ли это, но импортировать всю эту библиотеку только для такой простой задачи тоже не подходит.
Итак, в основном мой вопрос: есть ли лучший способ сделать это? Если нет, то какой из них вы бы назвали [поразить] самым красивым [/ поразить] наименее уродливым?