Зачем передавать имя программы в качестве параметра в main? - PullRequest
1 голос
/ 20 ноября 2010

Если я позвоню:

./program hello world

тогда:

argc would be 3.
argv[0] would be "./program".
argv[1] would be "hello".
argv[2] would be "world".

Какова цель передачи "./program" в качестве аргумента? На самом деле, это вовсе не аргумент!

Ответы [ 3 ]

4 голосов
/ 20 ноября 2010

Вы можете создавать символические ссылки на один и тот же двоичный файл. В зависимости от того, какую ссылку вы используете, вы получите различное поведение. Busybox является примером этого.

2 голосов
/ 20 ноября 2010

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

2 голосов
/ 20 ноября 2010

Одно из применений заключается в том, что приложение может знать, как оно было вызвано (по сути, как его собственное имя).

Обратите внимание, что то, что появляется в argv[], определяется реализацией.Например, если вы используете одну из функций UNIX exec(), ее содержимое может быть любым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...