这只是关于退出代码的几个约定。让我们看看一些手册是怎么说的:
GNU C 库参考手册
对于某些程序应该返回什么样的状态值,有一些约定。最常见的约定是 0 表示成功,1 表示失败......
一般约定为特殊目的保留状态值 128 及以上
- 一些非 POSIX 系统对退出状态值使用不同的约定
- 为了获得更大的可移植性,您可以使用宏EXIT_SUCCESS和EXIT_FAILURE
作为成功和失败的常规状态值。
ISO/IEC 9899:2011(C11 标准)
如果 status 的值为零或EXIT_SUCCESS,则返回实现定义的状态成功终止形式。如果 status 的值为EXIT_FAILURE ,则返回状态未成功终止的实现定义形式。否则返回的状态是实现定义的。
这意味着如果您想要(并且在大多数情况下就足够了)只是指示成功或失败,您绝对应该使用EXIT_SUCCESS和EXIT_FAILURE。如果你想指出其他错误,你应该重新发明你自己的退出状态。例如:
#define HEX_FILE_CREATE 2
#define HEX_FILE_CREATE 3
...
还有关于您应该返回什么以及如何返回的其他提示:
- 警告:不要尝试使用错误数作为退出状态。这实际上不是很有用;父进程通常不会关心发生了多少错误。更糟糕的是,它不起作用,因为状态值被截断为八位。因此,如果程序尝试报告 256 个错误,则父级将收到 0 个错误的报告——即成功
- 出于同样的原因,使用 errno 的值作为退出状态是行不通的——这些值可以超过 255
结论:
- 为了成功,请始终使用EXIT_SUCCESS
- 您的失败退出状态应介于 1 和 127 之间
- 不要使用errno错误代码作为退出状态