Ich wurde heute überrascht von gdb
:
Program exited with code 0146.
gdb
druckt den Rückkehrcode in Oktal ; Ich habe untersucht, warum ich Folgendes gefunden habe:
http://comments.gmane.org/gmane.comp.gdb.devel/30363
Das ist aber keine besonders befriedigende Antwort. Ein kurzes Googeln enthüllte die Geschichte nicht, also hoffte ich, dass jemand auf SO die Hintergrundgeschichte kennen könnte.
Eine etwas verwandte Frage, wie würde man den Rückkehrcode überhaupt in Oktal sehen? Vielleicht haben ältere Maschinen immer den Rückkehrcode gedruckt?
$ printf %o\\n $?
Ist ziemlich umständlich :)
$?
ist der Wert für Return - Code Shell und ist eine Nachkommastelle (oder tut GDB Unterstützung Ihres Beispiel cmd auch?). Ich weiß nicht, warum gdb es oktal meldet. Meine Lösung besteht darin, das Alte herauszuholen, umman ascii
zu sehen, was die Oktalwerte bedeuten. Interessante Frage, da Sie auch auf Oktalwerte aus anderen Programmen stoßen. Vielleicht wird es in Kernighans und Pikes 'Unix Programming Envioronment' besprochen. Viel Glück.man ascii
wäre es nicht sinnvoll, Oktal in Dezimal umzuwandeln.bc
wäre eine bessere Wahl.Antworten:
Die oktale Darstellung erleichtert die Interpretation des Exit-Codes für kleine Werte, die am häufigsten verwendet werden. Sollte diese Zahl, bei der es sich um ein Byte handelt, dezimal gedruckt werden, um herauszufinden, welches Signal einen Prozess unterbrochen hat, wäre im Oktal ein wenig Berechnung erforderlich. Sie können so gelesen werden, wie sie sind:
gdb
angezeigt05
, was keinen Unterschied machtSIGINT
( Control+ C)gdb
anzeigt,0202
das leichter als Signal Nr. 2 zu erkennen ist als130
.Darüber hinaus kann der Exit-Status auch eine Bitmaske sein, und in einem solchen Fall lässt sich Oktal (zumindest wenn Sie daran gewöhnt sind, was vor ein paar Jahrzehnten häufiger war als heutzutage) mental leichter in Bits umwandeln als in Dezimalzahlen oder sogar hexadezimal, wie zum Beispiel
chmod
immer noch eine Oktalzahl akzeptieren, um Dateiberechtigungen darzustellen :0750 = 111 101 000 = rwx r-x ---
.quelle
Ich habe keine Kopie dieses Textes und lese nur den kurzen Klappentext, der in Google Books verfügbar ist, aber. Gemäß dem X / Open Portability-Handbuch System V Specification Commands & Utilities S. 283 (gemäß Google Books)
Wenn eine Anwendung abnormal beendet wird, lautet ihr Exit-Status oktal 0200 + und es gibt eine Liste allgemeiner Statuswerte (die wahrscheinlich auch in oktal angegeben sind).
Es ist / war also eine Fehlermeldung des schlechten Mannes.
quelle