程序退出状态和 $?
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
,实现定义的状态形式 成功终止 返回。如果status
是EXIT_FAILURE
,则状态不成功的实现定义形式 返回终止。否则返回的状态为 实现定义。
通常,该值要么按原样解释,要么转换为更小的(可能是无符号的)类型,但这实际上取决于您的环境和实现。
【讨论】:
以上是关于程序退出状态和 $?的主要内容,如果未能解决你的问题,请参考以下文章