2016-12-05 5 views
-2

я компиляция и запуск кода C (много файлов), но мне нужно, чтобы понять физический смысл командной строки коды запуска arguments.I как этотКак искать аргументы командной строки в C?

./testmt signal1 3 5 1 1 

где SIGNAL1 является входным файлом

Как найти несколько файлов .c, чтобы найти аргументы командной строки (надеюсь, с комментариями)?

+0

Возможный дубликат [Анализ аргументов командной строки?] (Http://stackoverflow.com/questions/9642732/parsing-command-line-arguments) –

+1

найти, где 'main' и начать там (возможно,' int main (int argc, char * argv []) {'). Выполнение 'grep' в исходных файлах должно привести вас туда. – yano

+1

Как мы должны знать, что делает ваша программа? – OldProgrammer

ответ

2

Это конкретная операционная система. Я думаю, вы находитесь в Linux или какой-то другой системе Posix. Прочтите сначала Advanced Linux Programming. Читайте также о globbing. Имейте в виду, что ваш Unix shell расширяет аргументы (и после расширения вызывается системный вызов execve(2) ....). Если у вас оболочка bash (и на самом деле это поведение задано POSIX), прочитайте примерно Shell Operation, а затем примерно Shell expansions. Также прочтите главу Program Arguments документации libc. См. Также my answer о «хороших привычках для разработки аргументов командной строки?».

main функция (сигнатуры int main(int argc, char**argv);, и такая [возможно] подпись определяются стандартами C) - программа начатой ​​execve - получает положительное количество аргументов и NULL -завершённого массива строк. Так что в вашем случае (./testmt signal1 3 5 1 1) вы получаете argc=6 и argv[0] является "./testmt", argv[1] является "signal", argv[2] является "3", и т.д ... argv[5] является последним "1" и argv[6] является NULL.

Итак, погрузитесь в свой код и ищите main.

PS. AFAIK, в Windows поведение, вероятно, другое. Программа (а не оболочка) расширяет аргументы (фактически, возможно, это делается в файлах автозагрузки, прежде чем они назовут main). Но я ничего не знаю о Windows. См. Также Operating Systems: Three easy pieces.

Смежные вопросы