程序退出状态和$?

3

我读到的C++ Primer书中写道:

从main函数返回的值的访问方式取决于操作系统。在UNIX和Windows系统上,在执行程序后,您必须发出相应的echo命令才能获取状态。在UNIX中,我们通过echo $?来获得状态。

因此,如果程序是这样的:

int main ()
{
    return -88;
}

为什么echo $?不返回它本身?(当echo时打印了168)

1
echo $? 对你来说返回的是什么? - MartyE
2个回答

5

有点儿可以。但是,它会将值转换为无符号8位值,这是256 − 88 = 168。这是系统相关的特点。


@BjoernD:d'oh :-)(我在计算器上输入了“265”。但我的“减号”比你的好看。) - Kerrek SB

1

main返回一个值与使用该值调用std::exit相同。标准的最新草案对于std::exit(18.5,status是您调用它的值)有以下说明:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接