c语言 - "main"函数的返回值去哪里?



在C语言中,函数总是将其值返回给调用函数而从不返回给自身(如果返回类型不是void则)。如,

int main()

但是由于'main'函数是操作系统调用的,因此不是函数。那么,"main"函数返回它的值是谁呢?当使用表达式

返回时,值去了哪里?
return(0);

在节目的最后?

这完全是特定于操作系统的,但通常操作系统通过

调用程序
  1. 设置程序地址空间,
  2. 在OS内部创建一个新进程的记录,
  3. 启动自己的自定义函数,调用main并将返回值存储在OS内部。

我在(3)中提到的函数通常是一个很好的老式C函数,它只是跳到main,所以它可以从main捕获返回值,就好像它是一个普通的C函数(实际上是)。之后,它将该值存储在操作系统的某个地方,以便需要读取返回值的进程可以读取。

希望这对你有帮助!

如前所述,这是特定于操作系统的。在UNIX系统中,它看起来像这样:

当您使用gcc编译程序时,它会围绕main()函数封装一个启动例程。这个例程调用main()函数并保存其返回值。然后,它调用exit()函数(您的程序也可能调用该函数),完成一些一般的清理工作。这个函数然后再次调用_exit(),这是一个系统调用,告诉操作系统将main()函数的返回值保存在进程表中(保存有关进程的元信息)。一旦另一个进程在你的进程id (PID)上调用wait(),你的返回值就会给调用进程,你的进程就会从表中删除。

查看此资源获取更多信息:http://www.johnloomis.org/ece537/notes/Processes/process_environment.html

'main'函数的返回值在哪里?

返回给调用进程。

在POSIX兼容的系统上,如果调用父进程是C程序,它至少可以通过在子进程结束后调用wait()waitpid()来检索其子进程返回值的最低8bit。

大多数操作系统这样调用main:

exit(main(argc, argv, envp));

相关内容

  • 没有找到相关文章

最新更新