我编译并运行了一个C代码(很多文件),但我需要了解命令行参数的物理含义。我运行这样的代码
./testmt signal1 3 5 1 1
,其中 signal1是输入文件
如何搜索多个.c文件以查找命令行参数(希望使用注释行)?
答案 0 :(得分:2)
这是特定于操作系统的。我想你是在Linux或其他一些Posix系统上。先阅读Advanced Linux Programming。另请阅读globbing。请注意,您的Unix shell正在扩展参数(并在扩展后调用execve(2)系统调用....)。如果你的shell是bash
(实际上这个行为是由POSIX强制执行的),请阅读Shell Operation,然后阅读Shell expansions。另请阅读libc
文档的Program Arguments章节。另请参阅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]
为{ {1}}等... "3"
是最后一个argv[5]
而"1"
是argv[6]
。
然后深入了解您的代码,并寻找NULL
。
PS。 AFAIK,在Windows上的行为可能与众不同。程序(不是shell)正在扩展参数(实际上,可能在启动文件中完成,然后才调用main
)。但我对Windows一无所知。另请参阅 Operating Systems: Three easy pieces 。