在C程序中,main函数通过查看argc知道在argv中传递了多少个参数。我似乎不清楚系统调用程序如何知道有多少参数传递给它。有人可以帮助解释execve如何处理这些论点吗?
答案 0 :(得分:1)
我最近的Linux系统上execve
的文档说:
argv是传递给新程序的参数字符串数组。 envp是一个字符串数组,通常格式为key = value,它们作为环境传递给新程序。 argv和envp都必须以空指针终止。参数向量和环境可以被被调用程序的main函数访问,当它定义为:
int main(int argc, char *argv[], char *envp[])
我加粗了重要部分。 argv
列表的末尾必须有一个空指针。内核将计算参数并将计数作为argc
传递。