Intereting Posts
Как нормализовать строку с помощью ICU4C? malloc во встроенных системах Неопределенная ссылка на getaddrinfo Почему компилятор видит несоответствие между char * и спецификатором преобразования printf «s», когда char * typedef’d и доступен через структуру? Как скомпилировать существующую C-программу для Android с помощью NDK? Выделение массива char с помощью malloc Почему значение мусора в едином целое? Какова цель ungetc (или ungetch от K & R)? Почему спецификатор типа по типу возврата не имеет смысла? Чтобы скопировать файлы в двоичном режиме, почему это не работает, когда мы читаем и записываем из символьной переменной? Malloc внутри вызова функции, кажется, освобождается по возвращении? Как повысить производительность при работе с файлами в C fgets приглашение ограничено 1024 байт Вычисление кругового порядка величины строка заменяется в файле с помощью C

Являются ли аргументы программы C гарантией ‘\ 0’-прекращения?

Об аргументах main() , в стандарте 2011 C говорится (5.1.2.2.1: 2):

Если значение argc больше нуля, члены массива argv [0] через argv [argc-1] включительно должны содержать указатели на строки, которым перед запуском программы заданы значения, определяемые реализацией среды хоста.

Должно ли слово «строка» в этом контексте интерпретироваться как «строка с конечным номером», то есть последовательность символов, отличных от 0, за которыми следует конечная «\ 0», или do / могут ли некоторые реализации передавать аргументы другим программам по-разному?

На платформе POSIX представлены аргументы одного из семейств функций exec* проверенных функцией exec* как указатели на хорошо сформированные строки (и как?), Или если программа setuid воздерживается от предположения, что она прошла успешно -формированные строки с оконечным порядком в качестве аргументов?

Должно ли слово «строка» в этом контексте интерпретироваться как «строка с конечным номером», то есть последовательность символов, отличных от 0, за которыми следует конечная «\ 0», или do / могут ли некоторые реализации передавать аргументы другим программам по-разному?

7.1.1 определяет строку:

Строка представляет собой непрерывную последовательность символов, заканчивающихся и включающих первый нулевой символ.


Являются ли аргументы одного из семейств функций exec *, проверенных функцией exec *, указателями на хорошо сформированные строки (и как?).

Спецификация POSIX утверждает, что аргументы в семействе exec состоят из строк с нулевым завершением и не указывают, что происходит, если они не являются. Предположительно, это неопределенное поведение. Это кажется разумным, потому что нет разумных способов для функций exec проверять, что каждый аргумент правильно завершен нулем. (Хотя имейте в виду, что exec* должен копировать свои аргументы, поскольку адресное пространство должно быть заменено.)