Я не уверен, как правильно использовать optstring в функции getopt в C.
Как форматировать эту строку? Я видел примеры, где буквы рядом друг с другом, иногда разделенные точкой с запятой, иногда двумя точками с запятой.
Что это значит?
Ответ 1
Это просто строка, и каждый символ этой строки представляет опцию. Если для этой опции требуется аргумент, вы должны следовать за символом опции :.
Например, "cdf:g" принимает опции c, d, f и g; f требует дополнительного аргумента.
Опция в командной строке выглядит как -option, поэтому вы можете использовать опции -c, -d, -f argument и -g.
Ответ 2
Маска страницы getopt(3) делает это довольно ясным:
сама строка используется для указания юридических параметров, которые могут отображаться в командной строке,
если за опцией следует :, тогда этот параметр имеет требуемый параметр - не указывая, что это приведет к сбою функции,
если за опцией следует ::, то этот параметр имеет необязательный параметр.
Параметры - это однобуквенные идентификаторы. Например, указание строки типа aB:cD:: в качестве optstring будет означать, что ваша программа принимает параметры a, B с обязательным параметром c и D с необязательным параметром.
Ответ 3
Если для двоеточия : следует char или строка означает, что эта опция должна требовать аргумент
и если нет двоеточия, нет аргументов
для более подробной информации man 3 getopt
или посетите ссылку или manpage