【发布时间】:2012-01-21 14:52:56
【问题描述】:
fork/exec 创建了一个新进程。 Exec 设置了命令行参数,但我没有看到它设置了要放入 argc 的这些参数的数量。
main() 应该是在新进程中运行的第一个函数,但此时 argc 已经设置好了。
在哪里设置?它必须是某种设置代码,在调用 main 之前计算参数,但我读过的任何内容都没有解释此设置代码的用途或它所在的位置。
这是libc 吗?这在每个操作系统上是否都相同并被某些规范所涵盖?除此之外,我在哪里可以找到设置代码中发生的事情?它是在实例化全局变量之前调用的吗?
【问题讨论】:
-
您对哪种语言感兴趣?
-
语言规范详细说明了 main 执行时的内容。阅读它们以找出答案。操作系统所做的事情和语言运行时所做的事情因实现而异。很难说更多,因为你的问题有点模糊。这是一个相当大的主题,而且非常具体。
-
这非常依赖于系统。例如Linux 在内核的 execve 系统调用(do_execve() 函数)中计算 argv 中的项目。