程序退出状态和$?

时间:2012-08-17 17:49:27

标签: c++ exit-code

我读过的C ++入门书说明了

  

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

所以,如果程序是

int main ()
{
    return -88;
}

为什么echo $?不归还? (168打印在echo

2 个答案:

答案 0 :(得分:4)

确实如此。然而,它会将值转换为无符号的8位值,即256 - 88 = 168.这是系统相关的习惯的一部分。

答案 1 :(得分:1)

main返回值与使用该值调用std::exit相同。这就是标准的最新草案所说的关于std::exit(18.5,status是你称之为的价值):

  

最后,控制权返回给主机环境。如果是status   零或EXIT_SUCCESS,一种实现定义的状态形式   成功终止将被退回。如果statusEXIT_FAILURE,则状态的实现定义形式不成功   终止被退回。否则返回的状态是   实现定义的。

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