1

我遇到了一种情况,我必须获取程序的退出状态,即exit()函数返回的数字。

在 LINUX 中,使用$?命令我得到了状态。有没有其他方法可以在 Windows 中获得这种状态?

我注意到的另一件事是,如果我们将负数传递给exit()函数,它会使我的 IDE 崩溃,并且$?在这种情况下命令也无法提供状态。我检查了exit()函数,它的引用说我们可以传递一个整数。

4

1 回答 1

3

程序返回值在不同的操作系统上意味着不同的东西。在 Unix-y 系统上,只有 0-255 的值是有效的(1 个无符号字节)。请注意,这意味着不允许使用负值,这可能是您的 IDE 问题的原因。FreeBSD 在 中引入了许多特定含义sysexits.h,虽然这在我使用过的 Linux 发行版中肯定存在,但唯一真正被普遍接受的含义是0成功和非0失败。正如所Pete Becker指出的,EXIT_SUCCESSEXIT_FAILURE是标准定义的宏(0分别1在 Unix-y 平台上,但实现定义)。

在 Windows 上,您会得到一个 32 位有符号整数(允许使用负数,不知道它们是否意味着什么)。再次,0是成功,其他价值观意味着各种各样的事情。像echo $?,您可以使用echo %errorlevel%在控制台中查看最后一个程序的退出代码。

另请注意,我的N3337(非常接近 C++11 标准的草案)在section 3.6.1 paragraph 5

如果控制到达末尾main没有遇到return 语句,效果就是执行return 0;

于 2012-09-20T12:40:58.620 回答