我可以将argv从main传递给execv吗?

时间:2012-05-16 13:34:00

标签: c exec main argv setuid

execv()函数需要一个NULL个终止字符串数组,但不接受参数个数。它使用标记值(NULL指针)来确定数组何时结束。

execv()州的手册页......

  

按照惯例,第一个参数应该指向文件名   与正在执行的文件相关联。指针数组必须   被NULL指针终止。

...所以我的问题是......

我想将argvmain()传递给execv()

我能确定进入main的argv是由NULL指针终止的吗? 也就是说,我可以放心argv[argc] == NULL或者我是否必须分配自己的char*数组argc + 1并将NULL放入argc索引?

如果我可以放心,它是否在某处记录?

谢谢, 〜埃里克

1 个答案:

答案 0 :(得分:9)

是。 argv向量始终NULL终止。

C99标准草案规定:

  

如果声明它们,main函数的参数应遵循以下条件   约束:

     
      
  • argc的值应为非负值。
  •   
  • argv[argc]应为空指针。
  •