sys.exit / atexit - exitcode abfragen

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.
pug
User
Beiträge: 16
Registriert: Dienstag 4. September 2007, 17:00

sys.exit / atexit - exitcode abfragen

Beitragvon pug » Freitag 6. Februar 2009, 12:11

Hallo,

ich habe ein Script welches beim Beenden noch einige Meldungen loggen soll.

Mit atexit.register kann ich ja relativ einfach eine Funktion definieren, welche beim Beenden aufgerufen wird, allerdings habe ich keine Ahnung wie ich an den exitcode komme.

Kann ich irgenwie auf den exitcode zugreifen mit dem sys.exit aufgerufen wurde?

Grüße
Pug
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Freitag 6. Februar 2009, 13:45

Wozu brauchst Du denn den Code in Deinem Programm? Eigentlich ist der doch für externe Programme gedacht ...

Edit: Im übrigen kann es ja bei einer Unterbrechung von außen gar keinen Exit-Code geben, oder? Ich meine ein sys.exit(42) Statement wird ja niemals aufgerufen, wenn von außen an irgend einer Stelle das Programm abgebrochen wird ...
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Re: sys.exit / atexit - exitcode abfragen

Beitragvon derdon » Freitag 6. Februar 2009, 16:33

pug hat geschrieben:Kann ich irgenwie auf den exitcode zugreifen mit dem sys.exit aufgerufen wurde?

Grüße
Pug
Ja, zum Beispiel in der Bash mit

Code: Alles auswählen

echo $?
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Beitragvon str1442 » Freitag 6. Februar 2009, 17:20

Code: Alles auswählen

>>> try:
...  sys.exit(2)
... except SystemExit, e:
...  print e.message
...
2


Man kann in eigenen Programmen übringens direkt "raise SystemExit(exit_code)" nutzen.

EDIT: Hm, das könnte man eigentlich benutzen, um "atexit" selber zu bauen, wenn man wollte, und es auf der höchsten Ebene des Programms einrichtet. Danach mit einem einzelnen "raise" neu werfen lassen. Aber es gibt ja atexit.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder