[英]Program exit state
我对 Linux 中的程序退出 state 有疑问。 在我的程序中,我 fork 一个子进程并调用waitpid
来获取它。 当waitpid
返回时,我想检查我的子进程的退出 state。 我转向手册寻求帮助,发现waitpid
的第二个参数将保留 exit state ,我可以使用宏WEXITSTATE
来读取它。 但是,此宏仅提取实际退出 state 的最低有效 8 位,而在 function exit(int ret_val)
的手册中,它将以ret_val & 0x377
退出,而不是最低有效 8 位。
我的问题是,其他更多的位在哪里? 我们只是放弃它们吗? 为什么 Linux 采用这种策略? 这个实现不会给我们的程序带来麻烦吗?
谢谢和最好的问候。
我想你会发现0x377
真的是,或者应该是, 0377
。
它是八进制的,所以377 8是 8 位。
根据 POSIX 规范,退出返回值仅假设在 0 到 255 之间。 您不应该返回高于该值的值(换句话说,符合 POSIX 的操作系统将只关心退出返回值的低八位,这就是将传递给父进程的全部内容)。
Unix/POSIX 仅支持 8 位。 10 位将是一个奇数(在数学和逻辑意义上)值,所以我必须同意@DigitalRoss。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.