【发布时间】: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