Verwenden Sie die PID, um den Prozess zu beenden? Wenn ja, können Sie einfach destroy()
auf Ihrer Process
Instanz aufrufen. Keine Notwendigkeit für die PID. Bitte beachten Sie, dass Sie den Prozess unter Verwendung von ProcessBuilder
anstelle von getRuntime().exec()
starten müssen, damit dies funktioniert.
Wenn Sie wirklich die Prozess-ID benötigen, müssen Sie möglicherweise ein Shell-Skript verwenden. Es gibt keine Möglichkeit, die PID von Java, AFAIK zu bekommen.
EDIT:
Da Sie einen Griff auf dem Process
nach Ihrer App zu verlassen und zurückkehren, um es zu halten brauchen, ist eine Lösung, die ein statisches Element in der Klasse zu machen, die die Process
laicht:
private static Process myProcess;
Verwenden Sie dieses Element zum Speichern der Process
, die Sie von start()
auf Ihrem ProcessBuilder
zurückrufen. Das statische Element bleibt so lange bestehen, wie sich Ihre App im Speicher befindet - sie muss nicht sichtbar sein. Es sollte möglich sein, den Prozess nach der Rückkehr zu Ihrer App zu beenden. Wenn das System Ihre App zum Freigeben von Ressourcen beendet, haben Sie keine Möglichkeit, den untergeordneten Prozess zu beenden (wenn es weiterhin ausgeführt wird), aber diese Lösung sollte in den meisten Fällen funktionieren.
myPid() gibt die PID Ihrer App und nicht den Prozess zurück, den Sie mit getRuntime(). Exec() gestartet haben. –