我遇到了一种情况,我必须获取程序的退出状态,即exit()
函数返回的数字。
在 LINUX 中,使用$?
命令我得到了状态。有没有其他方法可以在 Windows 中获得这种状态?
我注意到的另一件事是,如果我们将负数传递给exit()
函数,它会使我的 IDE 崩溃,并且$?
在这种情况下命令也无法提供状态。我检查了exit()
函数,它的引用说我们可以传递一个整数。
程序返回值在不同的操作系统上意味着不同的东西。在 Unix-y 系统上,只有 0-255 的值是有效的(1 个无符号字节)。请注意,这意味着不允许使用负值,这可能是您的 IDE 问题的原因。FreeBSD 在 中引入了许多特定含义sysexits.h
,虽然这在我使用过的 Linux 发行版中肯定存在,但唯一真正被普遍接受的含义是0
成功和非0
失败。正如所Pete Becker
指出的,EXIT_SUCCESS
和EXIT_FAILURE
是标准定义的宏(0
分别1
在 Unix-y 平台上,但实现定义)。
在 Windows 上,您会得到一个 32 位有符号整数(允许使用负数,不知道它们是否意味着什么)。再次,0
是成功,其他价值观意味着各种各样的事情。像echo $?
,您可以使用echo %errorlevel%
在控制台中查看最后一个程序的退出代码。
另请注意,我的N3337
(非常接近 C++11 标准的草案)在section 3.6.1 paragraph 5
:
如果控制到达末尾
main
没有遇到return
语句,效果就是执行return 0;