进程的退出代码是否可以为小值溢出?

onq*_*tam 6 c++ bash terminal cmd exit-code

我正在编写测试框架,在main()中我返回失败测试的数量.例如:

int main() {
    int failedTests = runTests();
    return failedTests;
}
Run Code Online (Sandbox Code Playgroud)

这个"int"溢出了吗?我能%ERROR_LEVEL%== 0当我真正回来的东西比0有什么不同?它取决于主机操作系统吗?通常的最大值是多少?我可以确定整数<32768(2 ^ 16 - 一个短)总是适合吗?

编辑:

我有sys.exit使用0-127范围(几乎)的python问题所以我现在小心了

Bas*_*tch 4

这取决于操作系统。在 Linux 上,它被限制为 8 位,因此可以是 0(成功)或任何不大于 255 的正整数。请参阅_exit(2)wait(2)

只有两个值被标准化(按名称):(EXIT_SUCCESS通常为 0)和EXIT_FAILURE(通常为 1)。请注意,该标准定义了名称(可能还定义了exit(0);...的行为),但没有定义它们的值。

您可以将(失败的测试)数量写入stdout 或写入通过某个程序参数指定的某个文件。

FreeBSD 在其sysexits(3)中定义了一组退出名称和代码,但它们没有标准化,例如在 POSIX 中。请参阅有关 exit 的 POSIX 文档

  • @Leandros - 我担任 C++ 标准的项目编辑已有八年了,所以我想我非常了解它。 (3认同)
  • @PeteBecker 为了一劳永逸地解决这个问题,是的,你是绝对正确的,我被标准误导了,我实际上认为它符合实现定义的资格。我绝对知道实现定义的含义,我只是认为这两种状态都符合这样的条件。如果我粗鲁或不当,我深表歉意。 (2认同)