habe folgendes Problem.
Mein Vorgängerpraktikant sollte damals ein Backupscript schreiben. Ist alles ganz "toll" und so, nur terminiert es nicht.
Wenn ich es mittels "./clientbackup.py" aufrufe, terminiert es ohne Probleme.
Jedoch bei "python clientbackup.py", mag das Script nicht zu ende laufen.
Nach "tausenden" print-Ausgaben habe ich herausgefunden, dass es am os._exit(0) lag (mit dem ich die Kindsprozesse beenden wollte).
Nachdem ich os._exit(0) in os.EX_OK geändert habe, lief das Script ein Stück weiter und blieb bei sys.exit(0) hängen.
Grob aufgebaut ist das Script wie folgt:
Code: Alles auswählen
import os, sys
def main():
try:
...
pid = os.fork()
if pid == 0:
...
os.EX_OK
else:
...
...
print "bis hierher geht alles"
sys.exit(0)
except KeyError:
...
except KeyboardInterrupt:
...
sys.exit(1)
if __name__ == "__main__":
main()
* sys.exit(0) hinter die try-Anweisung -> kein Unterschied
* zusätzlich noch ein except SystemExit, e: sys.exit(e) -> kein Unterschied
* mit python -v ausgeführt -> cleanup main läuft durch
-> bei cleanup sys bleibt's hängen
# cleanup sys
# cleanup __builtin__
# cleanup ints: 39 unfreed ints in 4 out of 19 blocks
# cleanup floats: 30 unfreed floats in 1 out of 3 blocks
Weitere Infos:
python -V
Python 2.4.3
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
Wäre echt nett, wenn mir jemand weiterhelfen könnte.
Grüße lill