本程序实现了3个功能:
1)从当前用户的环境变量中读取一个环境变量的值;
2)设定一个临时的环境变量,有效期直到程序运行结束;
3)遍历当前用户所有的环境变量
程序代码:
#include#include //宏:分割两个不同的部分#define SEPARATE() printf("\n= = = = =\n\n")extern char **environ;void main(){ //打印指定的环境变量值 printf("打印指定的环境变量值\n"); char *var, *value; var = "USER"; value = getenv(var); if (value) { printf("[%s]: %s\n", var, value); } else { printf("[%s] 没有这个环境变量\n", var); } SEPARATE(); //添加一个环境变量 printf("添加一个环境变量\n"); var = "TEST_20140926"; value = getenv(var); if (!value) { printf("没有环境变量 %s\n", var); } if (putenv("TEST_20140926=12345678") == 0) { printf("添加环境变量 TEST_20140926\n"); } else { printf("环境变量 TEST_20140926 添加失败\n"); exit(EXIT_FAILURE); } value = getenv(var); if (value) { printf("[%s]: %s\n", var, value); } //注意:这个新增的环境变量仅仅对这个程序本身有效 //这是因为变量的值不会从子进程(本程序)传播到父进程(Shell) SEPARATE(); //打印全部环境变量 printf("打印全部环境变量\n"); char **env = environ; while (*env) { printf("%s\n", *env); env++; } exit(EXIT_SUCCESS);}
运行结果:(输入命令“gcc a.c -o b”编译)
(因为环境变量有很多,打印全部环境变量中只截图截取了一部分)
END