今日私をパニックにさせたのは次のとおりですgdb
。
Program exited with code 0146.
gdb
戻りコードの印刷8進数;見つけた理由を調べてみると:
http://comments.gmane.org/gmane.comp.gdb.devel/30363
しかし、それは特に満足のいく答えではありません。一部のクイックGoogle検索では履歴が公開されていないため、誰かがその背後に隠された物語を知ることができることを願っていました。
やや関連する質問です。 8進リターンコードをどのように確認しますか?たぶん古いマシンは常に戻りコードを印刷しますか?
$ printf %o\\n $?
とても恥ずかしいです:)
答え1
8進表現は、最も一般的に使用される小さな値に対する終了コードの解釈を単純化します。この数字(バイト)が10進数で印刷されると、プロセスを中断した信号を見つけるために少しの計算が必要ですが、8進数ではそのまま読み取ることができます。
- プロセスはステータス5で終了し、違いはありません
gdb
。05
- 表示された信号#2よりも識別しやすい
SIGINT
(Control+ C)があるため、プロセスは終了します。gdb
0202
130
また、終了ステータスはビットマスクにすることができます。この場合、8進数(少なくとも慣れているときは今より数十年前にもっと一般的でした)は、10進数でさえも、bithexに精神的に変換する方が簡単です。chmod
ファイル権限を表すために、8進数はまだ許可されています0750 = 111 101 000 = rwx r-x ---
。
答え2
記事のコピーはなく、ただGoogleブックスで簡単な概要を読んでください。 X/Open 移植性ガイド System V 特定のコマンドとユーティリティのページ 283 によると (Google ブックによると)
アプリケーションが異常終了した場合、その終了状態は8進数0200 +状態であり、一般的な「状態」値のリストがあります(8進数で提供される場合もあります)。
だからこれは貧しい人々のエラーメッセージです。