Witam

Mam problem - uruchamiam zewnętrzny proces przez Runtime.getRuntime.exec() i potem po jakimś czasie chcę sprawdzić jego stan (konkretnie loga). Zaznaczam, że proces ten nie kończy się, więc nie mogę użyć metody waitFor(). Kiedy używam Thread.sleep(), to zatrzymuje mi nie tylko wątek javy, ale również tenże proces, w związku z czym kiedy próbuję sprawdzić log, to nie wychodzi gdyż jest on pusty. Po zakończonym sleep() proces normalnie działa dalej, ale to już za późno. Dla rozjaśnienia kawałek kodu:

Runtime.getRuntime().exec(lvCmdLine); //tutaj uruchamiam wspomniany program, który generuje loga
Thread.sleep(startTime);
checkState(); //tutaj próbuję sprawdzić stan procesu

Próbowałem uruchamiać proces i sleep() w osobnych wątkach zarówno jako demony jak i niedemony w każdej kombinacji. Próbowałem także Timer.schedule(TimerTask,long), ale wtedy zatrzymuje uruchamianie procesu i już go nie kontynuuje. Czytanie na bieżąco Process.getInputStream() i Process.getErrorStream() też nie pomaga. Czy ktoś wie, jak można ten problem rozwiązać? Nie chodzi mi o to, aby to co robi ten proces wykonać w javie, bo moja klasa ma ten proces zrestartować i sprawdzić, czy się poprawnie uruchomił.