7.4 命令行参数
当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序。这是UNIX shell的一部分常规操作。在前几章的很多实例中,我们已经看到了这一点。
程序7 - 3将其所有命令行参数都回送到标准输出上。注意,通常(UNIX echo(1)程序不回送第0个参数)。
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++)
// for (i = 0; argv[i] != NULL, i++)
printf("argv[%d] = %s\n", i, argv[i]);
return 0;
}
如果编译该程序并将可执行程序文件命名为echoarg,那么
$./echoarg hello world
argv[0] = ./echoarg
argv[1] = hello
argv[2] = world
由于ISO C和POSIX . 1都要求a rgv [argc] 是一个空指针。这就使我们可以将参数处理循环改写为:
for(i = 0; argv[i] != NULL; i++)