【问题标题】:Return value of main in C [duplicate]C中main的返回值[重复]
【发布时间】:2016-02-09 19:45:20
【问题描述】:
int main()
{
    return 1;
}

在这种情况下,1 被退回给谁?就像如果函数 x() 正在调用函数 y() 并且 y() 正在返回一些东西,那么 x() 就会得到它。所以在上面的情况下,谁正在捕获从 main 返回的 1。

【问题讨论】:

  • 启动进程的人
  • 在某些操作系统和某些编译器上,来自 main 的返回值将被解释为进程退出代码。这与 C 标准 afaik 无关,只是有时做出的实现选择。
  • 它返回操作系统让它知道main执行成功并退出。
  • 其实它是告诉操作系统返回值是1。大多数人会把返回值0解释为成功,其他任何值都解释为错误。
  • C 最初是 Unix 的系统编程语言。在类 Unix 操作系统上,返回值转换为退出值,然后传递给操作系统内核。然后内核将它提供给启动刚刚退出的进程的父进程。然后父进程应该从内核收集退出值,以便 1)了解运行是否成功(或者如果没有,那么它是如何失败的)和 2)让内核知道退出的进程 id 插槽现在可以重用流程。其他系统可能会对返回值做自己的事情。

标签: c


【解决方案1】:

main 将其值返回给一些神奇的运行时启动库代码(不是您编写的,而且您通常看不到)。但是,根据您的操作系统,该值可能会影响您的用户环境。例如,在 Unix 或 Linux 系统上,如果我有五个.c 包含

int main()
{
    return 5;
}

如果我这样做了

cc five.c
a.out
echo $?

我将看到“5”作为 a.out 的退出状态。

【讨论】:

    猜你喜欢
    • 2016-03-06
    • 2014-07-20
    • 1970-01-01
    • 2014-03-31
    • 2019-04-02
    • 2013-05-10
    • 1970-01-01
    • 2011-06-18
    • 2011-12-01
    相关资源
    最近更新 更多