Java: warten Sie, bis exec Prozess, bis es beendet
Mir läuft ein java-Programm in Windows, speichert log von Windows-Ereignissen. Ein .csv-Datei erstellt, auf denen bestimmte Operationen durchgeführt werden.
Die Befehle sind execed und verrohrt. Wie kann ich mein Java-Programm zu warten, bis der Prozess beendet ist?
Hier ist der code-snippet, das ich benutze:
Runtime commandPrompt = Runtime.getRuntime();
try {
Process powershell = commandPrompt.exec("powershell -Command \"get-winevent -FilterHashTable @{ logname = 'Microsoft-Windows-PrintService/Operational';StartTime = '"+givenDate+" 12:00:01 AM'; EndTime = '"+beforeDay+" 23:59:59 '; ID = 307 ;} | ConvertTo-csv| Out-file "+ file +"\"");
//I have tried waitFor() here but that does not seem to work, required command is executed but is still blocked
} catch (IOException e) { }
//Remaining code should get executed only after above is completed.
- Alternativ kann man sich überlegen, Commons-exec: commons.apache.org/exec/tutorial.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
waitFor()
stattwait()
. So der thread wird blockiert, bis der Befehl ausgeführt wird beendet.Fand ich die Antwort hier Ausführen von shell-Skript aus Java Synchron
Dieser arbeiten soll. Wenn nicht, geben Sie, WAS genau funktioniert nicht