前言
我们在了解完了我们的进程调度与优先级,本章节我们来看看环境变量和命令行参数是什么。我想大家可能会有疑惑,我们写的程序运行时需要 " ./ "。但是我们 ls、cd 等命令却不需要。这就和我们环境变量有关了。我们一起来看看环境变量是什么吧。
一、基本概念
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。
如:我们在编写 C/C++ 代码的时候,在链接的时候,从来不知道我们的所链接的动静态库在哪里但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。
1.1、命令行参数
众所周知,我们在编写代码时,一定都会创建一个 main 函数,既然 main 是函数,那它有参数吗,参数是什么?答案当然是有的,一个是 argc,还有一个 argv;
#include <stdio.h>
int main(int argc, char* argv[]) {
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
我们的 main 函数是我们自己程序的入口,但是我们的 main 函数其实也是得被调用的。第一个执行的函数并不是 main 函数。我们的 argv 就是一个指针数组,而 argc 就是记录 argv 里面元素的个数。
当我们直接 ./ 运行时是这个样子,也就是我们程序的名字。
我们可以看出来我们的 argv 其实就是把我们命令行以空格为分隔符,把它们一个一个的变成指针数组的样子。
实际上我们的 argv 就是一个指针数组,当我们在命令行输入 ./code 或者以空格作为分隔符,其实我们输入的就是一个长字符串。我们在执行某些 C 语言命令时,这个字符串就会以空格作为分隔符切成多份。将我们第一个字符串的地址填到 argv[0] 的位置,以此类推…,有效个数就是我们的 argc。这个东西就叫做命令行参数。我们 argv 把有效元素放完一般以 NULL 结尾。


