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!

questionAnswers(5)

yourAnswerToTheQuestion