Java читает стандартный вывод из внешней программы с использованием inputtream
Я пытаюсь разработать класс, который читает стандартный вывод внешней программы (используя экземпляр Process, Runtime.getRuntime (). Exec (cmdLine, env, dir)). Программа принимает пользовательские данные во время процесса и не будет работать до тех пор, пока не будет введен правильный ввод; это, кажется, вызывает проблему в способе, которым я пытаюсь прочитать его вывод:
egm.execute(); // run external the program with specified arguments
BufferedInputStream stdout = new BufferedInputStream(egm.getInputStream());
BufferedInputStream stderr = new BufferedInputStream(egm.getErrorStream());
BufferedOutputStream stdin = new BufferedOutputStream(egm.getOutputStream());
int c; //standard output input stream
int e; //standadr error input stream
while((c=stdout.read()) != -1) //<-- the Java class stops here, waiting for input?
{
egm.processStdOutStream((char)c);
}
while((e=stderr.read()) != -1)
{
egm.processStdErrStream((char)e);
}
//...
Как я могу это исправить, чтобы программа принимала правильные данные и продолжала? Любая помощь в решении этой проблемы будет отличной!