Uruchamiam plik .exe z języka Java, używając klasy ProcessBuilder i klasy Process. Aby wyjaśnić, co robię:ProcessBuilder i Process.waitFor(), jak długo trwa oczekiwanie?
builder = new ProcessBuilder(commands);
builder.redirectErrorStream(true);
Process process = builder.start();
process.waitFor();
Chciałem tylko wiedzieć, na jak długo czeka "waitFor()"? Czy czeka na wykonanie mojego .exe lub czy czeka na zakończenie jego wykonywania?
Mój .exe jest skompilowanym skryptem AutoIt. Oznacza to, że mogą występować interakcje, takie jak ruchy myszy, które wymagają trochę czasu. Muszę wiedzieć, czy moje wykonywanie kodu Java jest włączone po wywołaniu pliku .exe lub czy naprawdę na niego czeka.
Co chcę osiągnąć jest wykonanie obrotowa dwóch skryptów, ale obawiam się, że mój kod Java jest wykonanie drugiego scenariusza, podczas gdy pierwsza z nich jest jeszcze uruchomiony. Czy ktoś obejście tego problemu? Cieszę się z wszelkich pomysłów.
cytuję docs: „* Powoduje bieżący wątek czekać, jeśli to konieczne, aż proces reprezentowany przez ten obiekt procesów został zakończony Metoda ta zwraca niezwłocznie, jeżeli podproces został już zakończony. *.”. – Maroun
Spójrz na [kiedy-runtime-exec --- won-t] (https://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html). Istnieje dobry opis przypadków użycia 'Process.waitFor()'. – MockerTim