библиотека обработки командной строки - getopt

Разработчик Tokbox здесь

Обратите внимание, что «AVAILABLE» используется только в том случае, если вы не предоставляете пользовательскую корзину s3 для загрузки архива, а файл загружается в облако Tokbox [1]

Итак:

  • , если вы укажете свой контейнер, статус будет: STARTED-> STOPPED-> UPLOADED
  • , если вы не указали свой контейнер, статус будет: STARTED-> STOPPED-> ДОСТУПНО

[1] https://tokbox.com/developer/guides/archiving/#status

5
задан Benjamin 17 December 2013 в 10:52
поделиться

3 ответа

argv1 и 2 должен закончиться в 0:

char* argv1[] = {"par1", "par2", 0};

Править: Хорошо, я прочитал getopt страницу справочника, и я нашел это:

Переменная optind является индексом следующего элемента, который будет обработан в argv. Система инициализирует это значение к 1. Вызывающая сторона может сбросить его к 1 для перезапуска сканирования того же argv, или при сканировании нового вектора аргумента.

Так, создание optind=1 между этими двумя заходит в getopt, заставляет его работать как ожидалось.

12
ответ дан 18 December 2019 в 08:31
поделиться

Есть ли какая-либо причина, почему Вы не используете getopt_long () вместо этого? На большинстве платформ, getopt () просто называет _getopt_long () с переключателем для отключения длинных споров. Это имеет место почти с каждой платформой, которую я знаю (все еще используемый), включая Linux, BSD и даже появляющуюся ОС как HelenOS - я знаю, я был тем, который портировал getopt к его libc :)

Намного легче на ЛЮБОМ использующем Вашу программу иметь долгие опции, по крайней мере, пока они не привыкают к использованию его.

getopt_long () позволит Вам использовать два (или больше) индексы опции, которые могут остаться 'живыми' после того, как они сделаны, обработав аргументы, только внутреннее (глобальный, неповторно используемый), нужно было бы быть сброшен, который не является никаким грандиозным предприятием.

Это позволяет, Вы легко сравнить количество аргумента с числом вариантов на самом деле передали в обоих вызовах со многими другими преимуществами.. рассмотрите не использование устаревшего интерфейса.

Взгляд getopt.h, Вы будете видеть то, что я имею в виду.

1
ответ дан 18 December 2019 в 08:31
поделиться

getopt() функционируйте использует некоторые глобальные переменные, как optind и optarg, хранить информацию состояния между вызовами. После того, как Вы заканчиваете обрабатывать один набор опций, существуют данные, оставленные в тех переменных, который вызывает проблемы со следующим набором опций. Вы могли потенциально попытаться сбросить getoptсостояние между вызовами путем очистки переменных, но я не уверен, что это работало бы, так как функция могла бы использовать другие переменные, которые не документируются, и Вы никогда не знали бы, получили ли Вы их всех; кроме того, это было бы абсолютно непортативно (т.е. если реализация getopt() изменения, Ваши повреждения кода). См. страницу справочника для деталей. Лучше всего не использовать getopt() больше чем для одного набора аргументов в данной программе, если можно помочь ему.

Я не уверен, существует ли фактическая функция для сброса getoptсостояние (или возможно повторно используемая версия функции, которая позволяет Вам сохранить состояние в своих собственных переменных)... Я, кажется, не забываю видеть что-то как этот однажды, но я не могу найти его теперь, когда я смотрю :-/

4
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: