看环境变量:env
子进程继承父进程的环境
1、每个程序都会接收到一张环境表,是一个以NULL指针结尾的字符指针数组。
2、全局变量char ** environ保存环境表的起始地址。
2.2、环境变量
//env_list.c,打印环境变量,修改环境变量是修改当前进程的拷贝,
只会影响到调用的当前进程
#include <stdio.h>
#include <stdlib.h> //声明了putenv等函数
void printenv(void){
printf("----------环境变量----------");
extern char** environ; //对已有的全局变量的外部声明,不像errno,errno已经在头文件errno.h声明,可以直接使用
char **env;
for(env = environ; env && *env; ++env) //env和env的目标不能为空
printf("%s\n", *env); //打印一级指针,即目标
printf("--------------------------------");
}
int main(void){
char env[256];
const char * name = "MYNAME";
//添加环境变量
sprintf(env, "%s = minwei", name);
putenv(env); //put完再打印
printf("%s=%s\n", name, getenv(name)); //getenv取出单个环境变量
//修改环境变量
sprintf(env, "%s=bjarne", name);
putenv(env); //修改环境变量,不存在就添加,存在就覆盖
setenv(name "minwei", 0); //不存在就添加,存在不覆盖
setenv(name "minwei", 1); //不存在就添加,存在就覆盖
unsetenv(name);//删除环境变量
clearenv();//清空环境变量
printenv();
return 0;
}
网友评论