环境变量:
环境变量,是指在操作系统中用来指定操作系统运行环境的一些参数。通常具备以下特征:
① 字符串(本质) ② 有统一的格式:名=值[:值] ③ 值用来描述进程环境信息。
存储形式:与命令行参数类似。char *[]数组,数组名environ,内部存储字符串,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]);
//printf("%s\n",environ[i]);
}
return 0;
}
环境变量的相关函数:
1 getenv函数
获取环境变量值
char *getenv(const char *name); 成功:返回环境变量的值;失败:NULL (name不存在)
练习:编程实现getenv函数。 【getenv.c】
2 setenv函数
设置环境变量的值
int setenv(const char *name, const char *value, int overwrite); 成功:0;失败:-1
参数overwrite取值:
1:覆盖原环境变量 0:不覆盖。(该参数常用于设置新环境变量,如:ABC = haha-day-night)
3 unsetenv函数
删除环境变量name的定义
int unsetenv(const char *name); 成功:0;失败:-1
注意事项:name不存在仍返回0(成功),当name命名为”ABC=”时则会出错。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
char *val;
const char *name = "ABD";
val = getenv(name);//获取name为ABD的环境变量值
printf("name = %s,val = %s.\n",name,val);
setenv(name,"this is a test.",1);//设置环境变量ABD的值为“this is a test”
val = getenv(name);
printf("name = %s,val = %s.\n",name,val);
int ret = unsetenv(name);//将name的环境变量取消设置
printf("ret = %d\n",ret);//成功返回0
val = getenv(name);
printf("name = %s,val = %s.\n",name,val);
return 0;
}