[Python-de] McMillan Installer, Linux, und der Restart

Georg Mischler schorsch at schorsch.com
Die Jun 10 09:54:13 EDT 2003


Gerson Kurz wrote:

> Dieses update.cmd ist ein Pythonscript, welches folgendes tut:
>
> - /-partition rw remounten
> - Laufendes /root/main beenden (stopsignal per sockets, warte 5 sekunden auf
> shutdown, falls nicht tot kille das programm)
> - Programmupdate einspielen
> - /root/main neu starten
> - 5 sekunden warten
> - /-partition ro remounten
> - umount /dev/fd0


Deine Beschreibung ist etwas konfus, da /root/main einmal als
Programm, dann wieder als Verzeichnis daherkommt. Ich nehme an,
dass das Programm tatsaechlich *in* diesem Verzeichnis liegt...


> Erstaunlicherweise liefert im Kontext von update.cmd ein
> os.popen("ps -A|grep main").readlines() einen "main defunct" eintrag ???

Nichts erstaunliches dabei.

 man wait


> Arg, bitte sagt mir daß das Unix-Prozesshandling nicht so bescheuert ist,
> Prozessleichen zu pflegen!

An Zombies unter unix wirst du dich gewoehnen muessen. Die sind
wahrscheinlich um einiges aelter wie du! (Ok, nicht alle... ;)

Solange der Elternprozess ein gestorbenes Kind nicht mit wait()
oder waitpid() wieder "eingesammelt" hat, bleibt dessen Eintrag
in der Prozessliste stehen. Andernfalls waere es fuer die Eltern
nicht moeglich, die ordnungsgemaesse Beendung und den
Rueckgabewert(!) ihrer Kinder zu ueberpruefen (unter Windows geht
das z.B. nicht). Wenn der Elternprozess zuerst stirbt, dann
"erbt" init dessen Kinder, welches sie dann automatisch mit
wait() erloest.


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/