Unix 历史:返回码八进制?

Pat*_*Pat 12 history gdb

今天让我措手不及gdb

Program exited with code 0146.
Run Code Online (Sandbox Code Playgroud)

gdb八进制打印返回码;调查我发现的原因:http : //comments.gmane.org/gmane.comp.gdb.devel/30363

但这并不是一个特别令人满意的答案。一些快速的谷歌搜索并没有揭示历史,所以我希望 SO 上的某个人可能知道背后的故事。

一个有点相关的问题,如何查看八进制的返回码?也许旧机器总是打印返回码?

$ printf %o\\n $?
Run Code Online (Sandbox Code Playgroud)

很别扭 :)

jll*_*gre 8

八进制表示简化了对最常用的小值的退出代码的解释。如果这个数字是一个字节,以十进制打印,找到哪个信号中断了进程需要在八进制中进行一些计算,它们可以按原样读取:

  • 进程以状态 5 退出,gdb显示05没有区别
  • 进程退出是因为它有一个SIGINT( Control+ C),gdb显示0202哪个比 更容易识别为信号 #2 130

此外,退出状态也可能是位掩码,在这种情况下,八进制(至少当您习惯它时,这在几十年前比现在更常见)比十进制甚至更容易在精神上转换为位十六进制,就像例如chmod仍然接受一个八进制数来表示文件权限:0750 = 111 101 000 = rwx r-x ---.

  • 约定是,如果它以零 (0) 开头,则为八进制。 (3认同)