Об аргументах main()
стандарт C 2011 года говорит (5.1.2.2.1:2):
Если значение argc больше нуля, элементы массива с argv[0] по argv[argc-1] включительно должны содержать указатели на строки, которым среда хоста присваивает определенные реализацией значения перед запуском программы.
Должно ли слово «строка» в этом контексте интерпретироваться как «строка, заканчивающаяся 0», то есть последовательность символов, отличных от 0, за которой следует конечная «\0», или могут ли некоторые реализации передавать аргументы программам по-другому?
На платформе POSIX аргументы одной из функций семейства exec*
проверяются функцией exec*
как указатели на правильно сформированные строки (и как?), или программа setuid должна воздерживаться от предположения, что она была передана правильно сформированной строки с 0-завершением в качестве аргументов?
\0
как можно было бы разумно ожидать возможности чтения строк? - person Robert Harvey   schedule 05.05.2014