程序退出状态和 $?

Posted

技术标签:

【中文标题】程序退出状态和 $?【英文标题】: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 $? 究竟为您返回了什么? 【参考方案1】:

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

【讨论】:

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

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

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

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

【讨论】:

以上是关于程序退出状态和 $?的主要内容,如果未能解决你的问题,请参考以下文章

退出应用程序并重新加载时保存 UIButton 的状态

VC++如何实时感知Windows系统进入和退出待机状态(附源码)

怎样正确退出Keil的调试状态

Heroku - 进程以状态 255 退出

shell编程基础:逻辑运算

python 获取程序退出状态码