由于自己编写操作环境变量比较繁琐,系统提供了操作环境变量的API函数
1 函数名:getenv
功能:从环境中取字符串(环境变量内容)
用法: char *geten(char *envvar)
int main(void)
{
char *s;
s=getenv("USER"); /* 小括号里面写入想要查找到的系统变量名,返回系统变量内容的字符串地址 ,如果没有查找到则返回NULL*/
printf("USER= %s\n",s); /* 打印系统变量内容 */
return 0;
}
****************************************
setenv(改变或增加环境变量)
相关函数 getenv,putenv,unsetenv
表头文件 #include<stdlib.h>
定义函数 int setenv(const char *name,const char * value,int overwrite);
函数说明 setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。
如果已经存在想要输入的环境变量:
overwirte = 1 :改变环境变量中已经存在的内容
overwirte = 0 :不改变环境变量中已存在的内容
返回值 执行成功则返回0,有错误发生时返回-1。
错误代码 ENOMEM 内存不足,无法配置新的环境变量空间
int main(){
15 char 15 char *p = NULL;
16 if((p = getenv("USER"))){
17 printf("USER = %s\n",p);
/*我的电脑中已经存在USER环境变量,
现在想要改变USER变量的内容,
我把overwirte设置为 1 */
18 setenv("USER","test",1);
19 printf("USER= %s\n",getenv("USER"));
20 // unsetenv("USER");
21 // printf("USER = %s\n",getenv("USER"));
22 /*不想改变USER的内容,overwirte设置为0*/
setenv("USER","tarena",0);
23 printf("USER= %s\n",getenv("USER"));
*p = NULL;
16 if((p = getenv("USER"))){
17 printf("USER = %s\n",p);
18 setenv("USER","test",1);
19 printf("USER= %s\n",getenv("USER"));
20 // unsetenv("USER");
21 // printf("USER = %s\n",getenv("USER"));
22 setenv("USER","tarena",1);
23 printf("USER= %s\n",getenv("USER"));
return 0;
}
************************************
int clearenv(void);
如果因程序安全因素的考虑,需要建立程序自己的环境参数,那么使用clearenv函数来删除 整个环境
****************************************
int putenv(char *string);
putenv取形式为name=value的字符串,直接将其放到环境表中,直接的意思是environment list中对应的entry直接指向传递进来的name=value,而无需动态申请内存来存放name=value
1. 如果name在环境中不存在,那么很好办,在环境中添加这个新的变量就OK。
2. 如果在环境中name已经存在,那么更新name的value(实质是更新环境表,指向新的value)
第1种情况,即name在环境中不存在,那么putenv函数必须在environment list中增加一个新的entry,然后是该entry直接指向name=value
第2种情况,即name在环境中已存在,那么putenv函数不必在environment list中增加一个新的entry,而是修改这个entry,使其指向name=value