Java odczytuje standardowe wyjście z zewnętrznego programu za pomocą strumienia wejściowego
Próbuję rozwinąć klasę, która odczytuje standardowe wyjście zewnętrznego programu (używając instancji Process, Runtime.getRuntime (). Exec (cmdLine, env, dir)). Program pobiera dane wejściowe użytkownika podczas procesu i nie będzie kontynuował, dopóki nie zostanie podane poprawne wejście; wydaje się, że powoduje to problem w sposobie, w jaki próbuję odczytać jego dane wyjściowe:
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);
}
//...
Jak mogę to naprawić, aby program przyjął poprawne dane wejściowe i kontynuował? Każda pomoc w rozwiązaniu tego problemu będzie świetna!