Mam taki problem:
Tworzę sobie proces za pomocą ProcessBuilder'a.
Proces ten to aplikacja konsolowa w C++ lub Python'ie. Chciałbym czytać wyjście standardowe na bieżąco (tzn brać i coś z takim tekstem robić).
Przy czym zaznaczę, iż nie jest to program start-stop, tylko działający w trybie ciągłym tzn na początku uruchamiam go poprzez:
ProcessBuilder builder = new ProcessBuilder("path/executable");
Process process = builder.start();
Mam problem jednak z określeniem, w którym miejscu zakończyło się wypisywanie wyjścia, tzn czasami zdarza się, że tekst który dostanę jest niekompletny, tzn:
Powiedzmy że dla "do something" wyjście powinno wyrzucać:
stdin: "do something"
stdout: "A B C D E"
Ale czasem wyrzuca:
stdin: "do something"
stdout: "A B C "
Miał ktoś może jakieś podobne problemy?
Próbowałem używać czegoś apache.commons.exec.DefaultExecutor ale ten z kolei określa proces za zakończony kiedy tylko stdout się odblokuje - tzn wyrzuci kompletne stdout, ale jak tylko zobaczy, że stdin jest odblokowane to zamyka cały proces.