Ich führe eine .exe-Datei von Java, mit der ProcessBuilder Klasse und der Process Klasse. Um zu erklären, was ich mache:ProcessBuilder und Process.waitFor(), wie lange dauert es?
builder = new ProcessBuilder(commands);
builder.redirectErrorStream(true);
Process process = builder.start();
process.waitFor();
Ich wollte nur wissen, wie lange wartet "waitFor()"? Wartet es, bis meine .exe ausgeführt wird, oder wartet es, bis seine Ausführung beendet ist?
Meine .exe ist ein kompiliertes AutoIt-Skript. Das bedeutet, dass es Wechselwirkungen wie Mausbewegungen geben kann, die einige Zeit brauchen. Also muss ich wissen, ob meine Java-Code-Ausführung nach dem Aufruf der .exe weitergeht oder ob sie wirklich darauf wartet.
Was ich erreichen möchte, ist die rotierende Ausführung von zwei Skripten, aber ich fürchte, dass mein Java-Code das zweite Skript ausführt, während das erste noch läuft. Hat jemand einen Workaround dafür? Ich bin froh für irgendwelche Ideen.
Ich zitiere die Dokumentation: "* Bewirkt, dass der aktuelle Thread ggf. wartet, bis der von diesem Process-Objekt dargestellte Prozess beendet ist. Diese Methode kehrt sofort zurück, wenn der Subprozess bereits beendet wurde. *". – Maroun
Werfen Sie einen Blick auf [when-runtime-exec --- won-t] (https://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html)). Es gibt eine gute Beschreibung der Anwendungsfälle 'Process.waitFor()'. – MockerTim