Я использую ProcessBuilder для выполнения команд и перенаправления вывода. Теперь я хочу добавить возможность вообще не выводить.
Конечно, я мог бы перенаправить в файл, но это оставило бы ненужные файлы в системе пользователя.
Я ищу решение, которое
- работает на всех платформах, включая Windows (например, без перенаправления в / dev / null)
- не использует try-catch (например, перенаправление на ноль и игнорирование исключения)
Единственный способ найти это было так:
ProcessBuilder processBuilder = new ProcessBuilder(command);
if (suppressOutput) {
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
}
Но это печатает на базовую оболочку, которая буквально не "без вывода".
Вот мое использование processBuilder с невыполненным выводом:
ProcessBuilder processBuilder = new ProcessBuilder(command);
processBuilder.directory(new File(workingdir));
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
while (process.isAlive()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) { }
// check for termination request
if (terminationRequest()) {
process.destroy();
return -1;
}
}
return process.exitValue();