execv()
函数需要一个NULL
个终止字符串数组,但不接受参数个数。它使用标记值(NULL
指针)来确定数组何时结束。
execv()
州的手册页......
按照惯例,第一个参数应该指向文件名 与正在执行的文件相关联。指针数组必须 被NULL指针终止。
...所以我的问题是......
我想将argv
从main()
传递给execv()
。
我能确定进入main的argv是由NULL指针终止的吗?
也就是说,我可以放心argv[argc] == NULL
或者我是否必须分配自己的char*
数组argc
+ 1并将NULL
放入argc
索引?
如果我可以放心,它是否在某处记录?
谢谢, 〜埃里克
答案 0 :(得分:9)
是。 argv
向量始终NULL
终止。
C99标准草案规定:
如果声明它们,
main
函数的参数应遵循以下条件 约束:
argc
的值应为非负值。argv[argc]
应为空指针。