7.4.命令行参数(Command-Line Arguments)
当一个程序被执行的时候,does the exec的进程能够传递一些命令行参数给该程序。这是UNIX系统shell的正常操作的一部分(指传递命令行参数)。我们已经在前面的章节中看到了许多这样的例子。
Example
程序7.4向标准输出输出了它所有的命令行参数。注意:正常的echo程序是不输出第0个参数的。
如果我们编译这个程序并且将可执行文件命名为echoarg,那么就是
$ ./echoarg arg1 TEST foo
argv[0]: ./echoarg
argv[1]: arg1
argv[2]: TEST
argv[3]: foo
ISO C和POSIX.1都能够确保argv[argc]是一个空指针。这使得我们可以用另一种方法来编码以参数为循环变量的方法:
for (i = 0; argv[i] != NULL; i++)
-----------------------------
这与程序7.4的for (i = 0; i < argc; i++)可以替换。
Figure 7.4. Echo all command-line arguments to standard output
#include "apue.h"
int
main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++) /* echo all command-line args */
printf("argv[%d]: %s/n", i, argv[i]);
exit(0);
}
------------------------------
argc:argument count
argv:argument value
command line: argv[0] argv[1] argv[2] argv[3] ... argv[argc-1]