fork/exec创建一个新进程。 Exec设置了命令行参数,但我看不到它设置了要放入argc
的那些参数的数量。main()
应该是在新进程中运行的第一个函数,但是那时argc
已经设置好了。
设置在哪里?它必须是某种设置代码,该代码在调用main
之前会对参数进行计数,但是我所读过的任何东西都没有解释该设置代码的作用或驻留位置。
这是libc
吗?每个操作系统上是否都相同,并包含某些规范?除此以外,我还能在哪里找到设置代码中的内容?在实例化全局变量之前调用它吗?
最佳答案
在调用main
之前,大多数实现中都会发生很多事情(通常是由类似于C运行时启动程序crt0
设置的环境)。
退出main
后,还会发生很多事情,例如资源关闭,atexit
退出处理程序等。
C标准实际上只涵盖语言方面发生的事情,而不涵盖实现如何在后台进行工作(这基本上就是您要的内容)。每个实现可能以不同的方式执行操作,但是许多UNIX类型将具有前面提到的crt0
来执行设置。
关于c++ - argc来自哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8953914/