4. 命令行参数和环境变量
程序启动时,操作系统会传递一些信息给 main 函数,这就是命令行参数。同时,进程还携带着一套环境配置,即环境变量。
命令行参数 (argc, argv)
在 Linux 终端下编译并运行一个简单的 C 程序,观察参数的传递过程。
gsm@VM-4-3-centos lesson13$ ls -l
total 16
-rwxrwxr-x 1 gsm gsm 8360 Oct 28 22:35 a.out
-rw-rw-r-- 1 gsm gsm 258 Oct 28 22:35 test.c
编写一个接收参数的程序 code.c:
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("argc: %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
注意,C99 标准之前不支持在 for 循环中声明变量,编译时需加上 -std=c99 选项。
gsm@VM-4-3-centos lesson13$ make gcc -o code code.c -std=c99
运行测试:
gsm@VM-4-3-centos lesson13$ ./code
argc: 1
argv[0]: ./code
gsm@VM-4-3-centos lesson13$ ./code 1 2 3
argc: 4
argv[0]: ./code
argv[1]: 1
argv[2]: 2
argv[3]: 3
可以看到,argv[0] 永远是程序名本身,后续才是用户输入的参数。我们可以利用这一点实现类似 ./program --help 的功能。

环境变量 (Environment Variables)
环境变量是进程运行时的全局配置,通过 getenv 函数获取,或通过 environ 指针数组直接访问。
#include <stdio.h>
{
** environ;
( i = ; environ[i]; i++) {
(, environ[i]);
}
;
}






