繁体   English   中英

程序退出 state

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM