Код: Выделить всё
Process process = builder.start();
Thread outThread = new Thread(() -> {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
// Read stream here
} catch (Exception e) {
}
});
Thread errThread = new Thread(() -> {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
// Read stream here
} catch (Exception e) {
}
});
outThread.start();
errThread.start();
new Thread(() -> {
int exitCode = -1;
try {
exitCode = process.waitFor();
outThread.join();
errThread.join();
} catch (Exception e) {
}
// Process completed and read all stdout and stderr here
}).start();
Могу ли я что-нибудь сделать, возможно, с помощью NIO, чтобы уменьшить это до меньше (1?) ниток? Все, о чем я могу думать, будет постоянно вращаться (если я не добавлю несколько снов), чего мне тоже не очень хочется делать...
ПРИМЕЧАНИЕ. Мне нужно читать по ходу дела (а не когда процесс остановлен), и мне нужно отделить стандартный ввод от стандартного ввода, чтобы не было возможности выполнить перенаправление.
Подробнее здесь: https://stackoverflow.com/questions/250 ... and-stderr