Auf terminierung von nicht child Prozess warten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Mittwoch 8. August 2007, 23:15

Ich habe einen Daemon Prozess welchen ich per SIGTERM beende um ihn dann neu zu starten. Nach dem ich SIGTERM gesendet habe möchte ich warten bis der Prozess auch wirklich beendet wurde. Mittels os.waitpid kann ich jedoch nur auf Child Prozesse warten. Als fix verwende ich derzeit Polling aber das gefällt mir überhaupt nicht.

Kennt jemand von euch eine Lösung?

PS: Das ganze muss nur auf *nix Systemen funktionieren.
lunar

Donnerstag 9. August 2007, 15:47

veers hat geschrieben:Ich habe einen Daemon Prozess welchen ich per SIGTERM beende um ihn dann neu zu starten. Nach dem ich SIGTERM gesendet habe möchte ich warten bis der Prozess auch wirklich beendet wurde. Mittels os.waitpid kann ich jedoch nur auf Child Prozesse warten. Als fix verwende ich derzeit Polling aber das gefällt mir überhaupt nicht.

Kennt jemand von euch eine Lösung?

PS: Das ganze muss nur auf *nix Systemen funktionieren.
Ich hatte mal genau das gleiche Problem. Mein Lösungsansatz war, mit inotify auf Veränderungen (genauer gesagt, Löschungen) im /proc Verzeichnis zu warten. Hat aber nicht geklappt, da der Kernel für PIDs in /proc keine IN_CREATE und IN_DELETE Ereignisse auslöst...

Mein Glück war, dass der Prozess im in etwa die selbe Zeit zum Beenden gebraucht hat, und sich somit time.sleep anbot. An einer besseren Lösung wäre ich aber dennoch interessiert...
Antworten