Да, это в основном так, argv[1]
— второй параметр командной строки. Первый параметр командной строки — это имя самой программы.
В качестве альтернативы, чтобы избежать семантического беспорядка, который изначально был в этом ответе, и комментариев от других, может иметь смысл назвать argv[0] параметром zeroth, так что argv[1]
теперь будет «первым» введенных пользователем значений.
В любом случае это происходит из семейства функций exec()
, например. execl
, который имеет использование:
int execl(const char *path, const char *arg0, ... /*, (char *)0 */);
В оболочке (Unix), когда вы вводите команду, при необходимости оболочка сначала разрешает имя команды (используя $PATH
), чтобы найти реальный абсолютный путь. Путь (абсолютный или относительный) предоставляется для path
, а команда, первоначально введенная, предоставляется как arg0
, и в конечном итоге становится argv[0]
в вашей программе.
Затем оставшиеся параметры командной строки заканчиваются как argv[1]
и т. д.
person
Alnitak
schedule
07.03.2011