旧 Unix 中 WEXITSTATUS 的范围限制为 0–127?

旧 Unix 中 WEXITSTATUS 的范围限制为 0–127?

众所周知,在许多(如果不是全部)Unix 上,进程的退出状态在通过 、 和 时将被截断为最低_exit8waitpidWEXITSTATUS。 (POSIX 的当前迭代指定状态应该不是通过_exitand时被截断waitid,但这与这个问题无关。)

是否曾有过这样的情况,可能深的过去,退出状态将被截断至最低通过什么机制传递的位在当时相当于_exit// waitpidWEXITSTATUS如果是这样,那是在哪一个历史实现上的,多久以前的实现?

答案1

7 位与 PDP-11 不同寻常,根据unix第二版手册(p.144) 将退出状态删除为

r0 的低字节可用作父进程的状态。

R0是一个通用 16 位寄存器,其低字节将是完整的 8 位。上面的 inwait R0是进程 ID,而 的高字节MQ得到 的低字节R0,但这仍然是一个 8 位值。

相关内容