Seite 1 von 1

exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 11:42
von bone2
wenn ich mit sys.exit(args...) irgendwas anderem als 0 aufrufe, ist der exit code von python immer 1. ist es nicht möglich, eine exit code 0 zu erzeugen und gleichzeitig eine nachricht an das aufrufende programm zu übergeben?

das python programm wird aus java aufgerufen.

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 11:58
von deets
Stimmt nicht.

Code: Alles auswählen

$ python -c "import sys; sys.exit(-10)"
$ echo $?
246
Vielleicht ist die Java Subprocess-Maschinerie schuld?

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 12:05
von BlackJack
@deets: Die Frage sollte wohl eigentlich lauten „mit etwas anderem als einer Zahl”, denn dann wird immer 1 zurück gegeben:

Code: Alles auswählen

bj@s8n:~$ python -c 'import sys; sys.exit("spam")'; echo $?
spam
1
bj@s8n:~$ python -c 'import sys; sys.exit("parrot")'; echo $?
parrot
1
@bone2: Die Lösung ist nicht so faul sein und den Text selbst ausgeben und dann `sys.exit()` mit der gewünschten Zahl aufrufen, oder das Programm einfach ans Ende kommen lassen wenn 0 gewünscht ist.

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 12:26
von bone2
jain. also ja, imemr wenn da nen string drin steht, ist es 1, wenn man ne zahl mitgibt wird die durchgereicht.

nein, das hat nix mit faulheit zu tun, sondern eher mit der tatsache wie der javacode bereits existiert und mit nem anderen process arbeitet, der ersetzt werden soll

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 13:21
von jerch
Du kannst doch nicht über den Exitcode eines Prozesses einen String "verschicken", das ist meines Wissens nach ein unsigned 8bit Integer unter Unix und wird vom OS gestellt.

Was ginge, wäre entweder die Exitcodes zu mappen (d.h. Dein Elternprozess kennt die Bedeutung des Codes) oder den Kindprozess auf STDERR schreiben zu lassen und bei !=0 die Ausgabe auszulesen. Letzteres ist mit deutlich größerem Aufwand verbunden, ersteres durch max 256 Codes limitiert.

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 13:29
von bone2
naja wir habens :)

Code: Alles auswählen

sys.exit("absturz welt")
macht ein

Code: Alles auswählen

print("absturz welt")
raise SystemExit(1)
also printen wir jetzt einfach die benötigten daten und geben dann den code dazu

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 13:57
von BlackJack
@bone2: *Du* musst einfach nur Deinen Text auf der Standardfehlerausgabe ausgeben und *danach* `sys.exit()` aufrufen, entweder ohne Argumente oder explizit mit 0. Es geht halt nicht beides nur in einem `sys.exit()`-Aufruf.

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 14:54
von bone2
bone2 hat geschrieben:also printen wir jetzt einfach die benötigten daten und geben dann den code dazu
? mache ich doch, kam vlt nicht so rüber

Re: exit code 0 und exit message

Verfasst: Freitag 22. Juni 2012, 15:30
von BlackJack
@bone2: Ich hatte Deinen Text nicht gesehen bevor ich meinen abgeschickt hatte. Der war eine Weile in einem offenen Editor.