程序退出状态

时间:2011-06-03 18:38:27

标签: c linux exit exit-code

我对Linux中的程序退出状态有疑问。在我的程序中,我分叉子进程并调用waitpid来获取它。当waitpid返回时,我想检查我的子进程的退出状态。我转向手册寻求帮助,发现waitpid的第二个参数将保持退出状态,我可以使用宏WEXITSTATE来读取它。但是,此宏只提取实际退出状态的最低8位,而在函数exit(int ret_val)的手动中,它将以ret_val & 0x377退出,而不是最低有效8位。

我的问题是,其他更多位在哪里?我们只是放弃它们吗?为什么Linux采用这种策略?这个实现不会给我们的程序带来麻烦吗?

谢谢和最诚挚的问候。

3 个答案:

答案 0 :(得分:5)

我认为您会发现0x377确实或应该是0377

它是八进制的,所以 377 8 是8位。

答案 1 :(得分:2)

退出返回值仅假定为POSIX规范的0到255之间。您不应该返回高于该值的值(换句话说,POSIX兼容的操作系统只会关注退出返回值的低八位,并且所有这些都将传递给父进程)。

答案 2 :(得分:0)

Unix / POSIX仅支持8位。 10位是奇数(在数学和逻辑意义上)值,所以我必须同意@DigitalRoss。