最近在看一本关于linux编程的书时,得到这样的信息:
_exit() 的 status 参数定义了进程的终止状态,当该进程的父进程调用 wait() 时,该状态可用。尽管定义为 int,但实际上只有状态的底部 8 位可供父级使用。并且只有0 ~ 127
建议使用,因为 128 ~ 255 可能会由于某种原因在 shell 中造成混淆。因为那个-1
会变成255
2 的补码。
以上是关于子进程的退出状态。
我的问题是:
- 为什么父进程只能获取子进程退出状态的8位?
- 普通函数的返回值呢?仅使用是否合理或有益
0 ~ 127
?因为我确实使用-1
有时作为返回值来指示错误,我应该在将来纠正它吗?
更新 - 通过 wait() / waitpid() 获取状态:
我在书(TLPI)中阅读了更多的 chps,发现返回状态和 wait()/waitpid() 中有更多值得一提的技巧,我应该在提出问题之前阅读更多的 chps。无论如何,我自己添加了一个答案来描述它,以防将来对某人有所帮助。
为什么父进程只能获取子进程退出状态的8位?
因为 POSIXsays so http://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html。 POSIX 之所以这么说,是因为这就是原始 Unix 的工作方式,并且许多从它派生并模仿它的操作系统都继续工作。
普通函数的返回值呢?
他们是不相关的。合理的就退货。-1
与任何其他值一样好,实际上是在大量标准 C 和 POSIX API 中指示错误的标准方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)