Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ?

XFlipX

Aktives Mitglied
Hallo,

habe folgende Frage:

Wenn ich einen externen Prozess per destroy-Methode kille, dann müßte das Prozess-Object null sein oder ? Ich habe das bei mir überprüft und leider ist das Prozess Objekt nicht null obwohl der externe Prozess gekillt wurde (auch im Taskmanager verschwunden ist).

Danke, XFlipX
 
Danke für die schnelle Antwort -> wie könnte ich jetzt den Status abfragen ? Mit der exitValue()-Methode bekomme ich eine Exception, da ja der Process nicht beendet wurde (komischerweise)

XFlipX
 
Also mit der waitFor-Methode bekomme ich jetzt erstmal eine Status zurückgeliefert (1).

Was sagt den der Error-Stream?

Also der Prozess fährt bei mir mit der destroy Methode nicht richtig runter. Da ich mir die Statusmeldungen in meiner Hauptapplikation ausgebe, kann ich das nachprüfen. Da ich von Seitens Java keine terminate-Methode habe und ich mit dem ext. Programm nicht kommunizieren kann, habe ich hier leider bis jetzt keine andere Wahl, als die destroy-Methode.

Das einfache Schließen des externen Windows fährt den Process erst sauber runter und ich erhalte auch die "0" als Status.

XFlipX
 
Also mit der waitFor-Methode bekomme ich jetzt erstmal eine Status zurückgeliefert (1).



Also der Prozess fährt bei mir mit der destroy Methode nicht richtig runter. Da ich mir die Statusmeldungen in meiner Hauptapplikation ausgebe, kann ich das nachprüfen. Da ich von Seitens Java keine terminate-Methode habe und ich mit dem ext. Programm nicht kommunizieren kann, habe ich hier leider bis jetzt keine andere Wahl, als die destroy-Methode.

Das einfache Schließen des externen Windows fährt den Process erst sauber runter und ich erhalte auch die "0" als Status.

XFlipX

Glückwunsch, du hast empirisch am Beispiel deiner Anwendung bewiesen, dass die JavaDoc der Klasse Process wirklich stimmt... ;-)
 
Ein Prozess kann (plattformunabhängig) nur interaktiv beendet werden (Fenster schließen) oder er beendet sich von selber.
Mit waitFor() kannst du anscheinend auf das Ende warten und bekommst auch mit wenn der Prozess von dritter Seite beendet wird (kill). Mit destroy kannst du den Prozess zwingend beenden. Dann kannst du noch STDOUT und STDERR des Prozesses erhalten... was brauchst du jetzt genau?
 
Ein Prozess kann (plattformunabhängig) nur interaktiv beendet werden (Fenster schließen) oder er beendet sich von selber.

Schade!

Ich möchte in meiner Hauptapplikation nur wissen, ob der ext. Prozess (Player) noch läuft oder nicht.

XFlipX
 
Und was passt mit waitFor() nicht?

Passen schon, mich wurmt nur, dass ich mit Java einfach nicht die Möglichkeit habe einen externen Process sauber terminieren zu lassen.

Ich habe es jetzt so gemacht, dass ich, wenn ich den externen Process per destroy kille, dass process-Object auf null setze.

XFlipX
 

Zurück
Oben