getenv獲取環境變量值的函數;
setenv改變或者添加環境變量函數;
unsetenv 取消環境變量;
(可以在終端上man 函數名來獲取詳細的函數信息)
#include<stdio.h> #include<stdlib.h> #include<string.h>int main() {char *val;const char *name = "ABD";val = getenv(name); //獲取name的環境變量值printf("1,%s = %s\n",name,val);setenv(name, "haha-day-and-night",1); //設置name的環境變量值為haha-day-and-night val = getenv(name);printf("2,%s = %s\n",name,val);#if 0int ret = unsetenv("ABCDEFG");printf("ret = %d\n",ret);val = getenv(name);printf("3,%s = %s\n",name,val); #elseint ret = unsetenv("ABD"); //取消環境變量name的值printf("ret = %d\n",ret);val = getenv(name);printf("3,%s = %s\n",name,val); #endifreturn 0; }
運行結果:
ubuntu1604@ubuntu:~/wangqinghe/C/20190805$ gcc setenv.c -o setenv
ubuntu1604@ubuntu:~/wangqinghe/C/20190805$ ./setenv
1,ABD = (null)
2,ABD = haha-day-and-night
ret = 0
3,ABD = (null)
?
把if 0 改為 1
運行結果:
ubuntu1604@ubuntu:~/wangqinghe/C/20190805$ gcc setenv.c -o setenv
ubuntu1604@ubuntu:~/wangqinghe/C/20190805$ ./setenv
1,ABD = (null)
2,ABD = haha-day-and-night
ret = 0
3,ABD = haha-day-and-night
?
沒有ABCDEFG這個環境變量,刪除它時,是不會報錯的。
?
但是如果把?? int ret = unsetenv("ABCDEFG");
改為 ???? int ret = unsetenv("ABD="); 這種時,它會報錯。
?
運行結果:
ubuntu1604@ubuntu:~/wangqinghe/C/20190805$ ./setenv
1,ABD = (null)
2,ABD = haha-day-and-night
ret = -1
3,ABD = haha-day-and-night