Все обсуждения, которые я нашел при чтении из Process
stdout, делают это блокирующим образом, как здесь:
Process process=Runtime.getRuntime().exec(cmd);
BufferedReader in=new BufferedReader(
new InputStreamReader(process.getInputStream()));
for(String line;(line=in.readLine())!=null;)
{
useText(line);
}
Если я пытаюсь избежать блокировки, я могу опрашивать поток, используя in.ready()
.
Но что мне действительно нужно, так это оставить процесс запущенным и сделать что-то полезное, и пытаться читать что-либо только тогда, когда данные действительно доступны. Поэтому я ищу что-то вроде сигнала Qt QProcess::readyReadStandardOutput
. Обратите внимание, что BufferedReader
nethod ready
- это не то, что я ищу: это просто метод, который мне придется неоднократно проверять, а не какой-либо сигнал.
Есть ли что-нибудь подобное в Java?