Code: Select all
ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
In Java erhalte ich mit process.destroy(); den Statuscode „1“, was eine abnormale Beendigung bedeutet. Ich erhalte den Status per:
Code: Select all
processToExecute.destroy();
processToExecute.exitValue(); //This return me status '1'
Wenn ich versuche, die Datei nach dem Beenden zu löschen, erhalte ich Folgendes:
Die Aktion kann nicht ausgeführt werden, da die Datei in FFMPEG.exe geöffnet ist
Das bedeutet, dass der Prozess den Befehl nicht beendet. Es belegt immer noch diese Datei, weshalb ich sie nicht abspielen kann. Der Prozess wird beendet, wenn ich „processToExecute.destroy(); aufrufe, die Aufgabe jedoch noch aktiv ist.
Wenn ich in der Eingabeaufforderung STRG+C oder Q drücke, wird er erfolgreich beendet und ist in den Prozesslisten nicht sichtbar. Wenn ich cmd>processToExecute.destroy(); programmgesteuert aufrufe, wird es beendet, aber ich sehe es immer noch in der Liste der ausgeführten Prozesse, genau wie wenn ich dies mit taskkill oder kill in einer anderen Eingabeaufforderung durch Angabe des Namens oder der PID beende (wird abnormal beendet). Ich verwende den Befehl tasklist, um zu sehen, dass die Methode destroy() aus der Anwendung und der Befehl taskkill oder kill den Prozess nicht normal beendet, wie es STRG+C oder Q tut.
Mobile version