execve如何知道在argv中传递了多少个参数?

时间:2014-07-25 03:14:16

标签: execve

在C程序中,main函数通过查看argc知道在argv中传递了多少个参数。我似乎不清楚系统调用程序如何知道有多少参数传递给它。有人可以帮助解释execve如何处理这些论点吗?

1 个答案:

答案 0 :(得分:1)

我最近的Linux系统上execve的文档说:

  

argv是传递给新程序的参数字符串数组。 envp是一个字符串数组,通常格式为key = value,它们作为环境传递给新程序。 argv和envp都必须以空指针终止。参数向量和环境可以被被调用程序的main函数访问,当它定义为:

int main(int argc, char *argv[], char *envp[])

我加粗了重要部分。 argv列表的末尾必须有一个空指针。内核将计算参数并将计数作为argc传递。