【问题标题】:Program exit status and $?程序退出状态和 $?
【发布时间】:2012-08-17 17:49:26
【问题描述】:

我读过的C++ Primer书说

从 main 返回的值以系统相关的方式访问。 在 UNIX 和 Windows 系统上,您必须在远处执行程序 发出适当的 echo 命令。在 UNIX 上,我们通过以下方式获取状态 回声$?

所以,如果程序是

int main ()
{
    return -88;
}

为什么echo $? 不返回? (168 印在echo

【问题讨论】:

  • echo $? 究竟为您返回了什么?

标签: c++ exit-code


【解决方案1】:

确实如此。不过,它会将值转换为无符号的 8 位值,即 256 - 88 = 168。这是依赖于系统的习惯的一部分。

【讨论】:

  • @BjoernD: d'oh :-)(我在 calc 中输入了“265”。但我的“减号”看起来比你的更漂亮。)
【解决方案2】:

main 返回值与使用该值调用std::exit 相同。这就是标准的后期草案中关于std::exit 的内容(18.5,status 是您调用它的值):

最后,控制权返回到宿主环境。如果status 是 零或EXIT_SUCCESS,实现定义的状态形式 成功终止 返回。如果statusEXIT_FAILURE,则状态不成功的实现定义形式 返回终止。否则返回的状态为 实现定义。

通常,该值要么按原样解释,要么转换为更小的(可能是无符号的)类型,但这实际上取决于您的环境和实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多