关于
main()
参数,2011年C标准(5.1.2.2.1:2)规定:
如果argc的值大于0,则数组成员argv[0]到argv[argc-1](含)将包含指向字符串的指针,在程序启动之前由主机环境给出实现定义的值。
在这种情况下,“字符串”一词是否应解释为“0结尾的字符串”,即以非0字符序列结尾,后跟最终的'\0',或者一些实现是否以不同的方式传递程序参数?
在POSIX平台上,exec*
函数族之一的参数是否由exec*
函数验证为指向格式正确的字符串(如何验证?),或者一个setuid程序应该避免假设已经传递了格式正确的0结尾字符串作为参数?
\0
结尾,有什么合理的方法能够读取这些字符串呢? - Robert Harvey