1、getenv函数

  头文件:#include<stdlib.h>

  函数原型: char * getenv(const char* name);

  函数说明:getenv()用来取得参数name环境变量的内容。

  函数参数:name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。

  返回值:若环境变量存在,返回环境变量值的指针,否则返回NULL

  

  例子:

 #include <stdlib.h>
#include <stdio.h>
int main()
{
char* path = NULL;
if((path = getenv("USER")))
printf("USER = %s\n", path); return ;
}

  执行的结果是USER = hxinuan,其中hxinuan是我个人计算机的名字

 2、putenv函数

  头文件:#include<stdlib.h>

  函数原型: int putenv(const char* str);

  函数说明:putenv用来改变或者增加环境变量的内容

  参数:str的格式为name=value,若环境原先存在,则环境变量值会依参数str改变,若不存在,则增加该环境变量

  返回值:成功返回0,错误返回-1.

  

  例子:

 #include <stdlib.h>
#include <stdio.h>
int main()
{
char* path = NULL;
if((path = getenv("USER")))
printf("USER = %s\n", path); putenv("USER=test"); if((path = getenv("USER")))
printf("USER = %s\n", path);
return ;
}

  执行的结果为:

  USER = hxinuan

  USER = test

  改变的环境的变量只在程序中有效,你在程序里做的改变不会反映到外部环境中,这是因为变量的值不会从子进程传播到父进程,这样做更安全。

3、setenv函数

  头文件:#include<stdlib.h>

  函数原型: int setenv(const char* name, const char* value, int overwrite)

  函数说明:setenv用来改变或者增加环境变量

  参数:name为环境变量名称字符串。 value则为变量内容,overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。

  返回值:成功返回0,错误返回-1.

  

  例子:

   

 #include <stdlib.h>
#include <stdio.h>
int main()
{
char* path = NULL;
if((path = getenv("USER")))
printf("USER = %s\n", path); setenv("USER", "test", ); if((path = getenv("USER")))
printf("USER = %s\n", path);
return ;
}

  执行的结果仍为:

  USER = hxinuan

  USER = test

  通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。如果在某一次运行程序时执行了setenv函数,进程终止后再次运行该程序,上次的设置是无效的,上次设置的环境变量是不能读到的。

4、unsetenv函数

  头文件:#include<stdlib.h>

  函数原型: int unsetenv(const char* name)

  函数说明:删除name环境变量的定义,即使不存在也不会出错

  参数:name为环境变量名称字符串。

  返回值:成功返回0,错误返回-1.

  

  例子:

 #include <stdlib.h>
#include <stdio.h>
int main()
{
char* path = NULL;
unsetenv("USER");
path = getenv("USER");
printf("USER = %s\n", path); return ;
}

  执行的结果:

  USER = (null)

linux之getenv putenv setenv和unsetenv详解的更多相关文章

  1. 环境变量篇getenv putenv setenv

    getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdlib.h> 定义函数 char * getenv(const ...

  2. linux系统的任务计划crontab使用详解

    linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...

  3. Linux(centos)系统各个目录的作用详解

    Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...

  4. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  5. 轻松学习Linux之Shell文件和目录属性详解

    轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...

  6. Linux进程实时IO监控iotop命令详解

    介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...

  7. Linux服务器,服务管理--systemctl命令详解,设置开机自启动

    Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了. 摘要: syst ...

  8. Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】

    转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ...

  9. Linux中redis安装配置及使用详解

    Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...

随机推荐

  1. 链表求和12 · Add Two Numbers

    反向存储,从左往右加 [抄题]: 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和.给 ...

  2. Elk+redis的配置

    1.先到网站上下载 https://www.elastic.co/cn/downloads,需要的工具 Elasticsearch,Kibana,Logstash,Filebeat. 先把redis安 ...

  3. [Selenium]刷新页面 Refresh page

    5 different ways to refresh a webpage using Selenium Webdriver   Here are the 5 different ways, usin ...

  4. 动态执行SQL语句,接收返回值

    一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...

  5. js的prototype(2)

    1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javasc ...

  6. 服务器上如何再另外添加一个E盘

    我的电脑按右键,选择管理..然后在左边选择磁盘管理,然后对着C盘或者D盘按右键,选择压缩卷,等一下下,就会出现个框框让你选择压缩多少,然后多了一个可用空间,再把它分成一个分区就OK拉 步骤:对可用空间 ...

  7. UVaLive 4128 Steam Roller (多决策最短路)

    题意:给定一个图,r 根横线, c 根竖线.告诉你起点和终点,然后从起点走,每条边有权值,如果是0,就表示无法通行.走的规则是:如果你在下个路要转弯,会使这段路的时间加倍,但是如果一条路同时是这样,那 ...

  8. PHP(六)PHP和HTML混合的一种形式

  9. VS2017设置默认管理员权限启动

    找到vs安装目录下的:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe 右键- ...

  10. ZOJ2256 Mincost 2017-04-16 19:36 44人阅读 评论(0) 收藏

    Mincost Time Limit: 2 Seconds      Memory Limit: 65536 KB The cost of taking a taxi in Hangzhou is n ...