c - 适当的返回状态/值范围

Eri*_*ang 6 c fork process return-value

最近,在读一本关于linux编程的书时,我收到一条消息:

给出_exit()的status参数定义了进程的终止状态,当调用wait()时,该进程的父进程可以使用该进程.虽然定义为int,但实际上只有父8的状态的底部8位可用.并且只0 ~ 127推荐使用,因为128~255由于某些原因可能会混淆shell.由于这-1将成为2552的补充.

以上是关于子进程的退出状态.

我的问题是:

  • 为什么父进程只获得子进程退出状态的8位?
  • 正常功能的返回值怎么样?仅使用它是合理的还是合理的0 ~ 127?因为我确实使用-1返回值来表示错误,所以我今后应该更正.

更新 - 通过wait()/ waitpid()获取状态:

我在书中阅读了更多的chps(TLPI),发现在返回状态和wait()/ waitpid()中有更多技巧值得一提,我应该在提出问题之前阅读更多的chps.无论如何,我自己添加一个答案来描述它,以防将来可能对某人有所帮助.

n. *_* m. 5

为什么父进程只得到子进程退出状态的8位?

因为 POSIX是这么说的。POSIX 这么说是因为这就是原始 Unix 的工作方式,并且许多从它派生出来并以它为模型的操作系统继续工作。

普通函数的返回值呢?

他们是不相关的。返回任何合理的。-1与任何其他值一样好,实际上是在大量标准 C 和 POSIX API 中指示错误的标准方法。