一、环境变量
环境变量,是指在操作系统中用来指定操作系统运行环境的一些参数。通常具备以下特征:
1. 字符串(本质) 2. 有统一的格式:名=值[:值] 3. 值用来描述进程环境信息。
存储形式:与命令形参类似。char *[ ]数组,内部存储字符串,NULL作为哨兵结尾。
使用形式:与命令形参类似。
加载位置:与命令形参类似,位于用户区,高于stack的起始位置。
引入环境变量表:需声明环境变量。 extern char ** environ;
测试代码:
#include <stdio.h>
extern char **environ;
int main()
{
int i = 0;
for(i = 0; environ[i]; ++i) {
printf("%s\n",environ[i]);
}
return 0;
}
输出结果:
二、主要函数应用:
1. getenv函数原型:
函数作用:获取环境变量
#inlcude<stdlib.h>
char *getenv(const char *name);
返回值:成功,返回环境变量的值,失败,NULL(name不存在)
2. setenv函数原型:
函数作用:设置环境变量的值
#include<stdlib.h>
char *setenv(const char *name, const char *value, int overwrite);
返回值:若成功,返回0;若失败,返回-1
参数overwrite取值:
- 1:覆盖原环境变量
- 0:不覆盖 (该参数常用语设置新环境变量,如:ABC = haha-day-night)
3. unsetenv函数原型:
函数作用:删除环境变量name的定义
#inlcude<stdlib.h>
int unsetenv(const char *name);
返回值:若成功,返回0;若失败,返回-1
注意事项:name不存在仍然返回0(成功),当name命名为“ABC=”时会出错。
三、程序清单:
1. 测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *val;
const char *name = "ABD";
val = getenv(name);
printf("1, %s = %s\n", name, val);
setenv(name, "haha_day-and-night", 1);
val = getenv(name);
printf("2, %s = %s\n", name, val);
int ret = unsetenv("ABD");
printf("ret = %d\n", ret);
val = getenv(name);
printf("3, %s = %s", name, val);
return 0;
}
输出结果: