linux之getenv putenv setenv和unsetenv详解
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详解的更多相关文章
- 环境变量篇getenv putenv setenv
		getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdlib.h> 定义函数 char * getenv(const ... 
- linux系统的任务计划crontab使用详解
		linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ... 
- Linux(centos)系统各个目录的作用详解
		Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ... 
- linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)
		linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ... 
- 轻松学习Linux之Shell文件和目录属性详解
		轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ... 
- Linux进程实时IO监控iotop命令详解
		介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ... 
- Linux服务器,服务管理--systemctl命令详解,设置开机自启动
		Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了. 摘要: syst ... 
- Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】
		转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ... 
- Linux中redis安装配置及使用详解
		Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ... 
随机推荐
- day25 map,filter,reduce 内置函数,作业
			=====================作业一#用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sbname=['alex','wupeiqi','yuanhao']###### ... 
- android虚拟机的垃圾收集
			Dalvik :http://zh.wikipedia.org/wiki/Dalvik%E8%99%9A%E6%8B%9F%E6%9C%BA ART :http://source.android.co ... 
- Vivado&ISE&Quartus II调用Modelsim级联仿真
			博主一直致力寻找高效的工作方式,所以一直喜欢折腾软件,从刚开始只用软件IDE自带的编辑器,到Notepad++,再到后来的Vim,从用ISE14.7自带的Isim仿真,到发现更好的Modelsim,再 ... 
- 企业搜索引擎开发之连接器connector(二十二)
			下面来分析线程执行类,线程池ThreadPool类 对该类的理解需要对java的线程池比较熟悉 该类引用了一个内部类 /** * The lazily constructed LazyThreadPo ... 
- delphi跨平台SOCKET--System.Net.Socket
			delphi跨平台SOCKET--System.Net.Socket 不知始于DELPHI哪一个版本,姑且始于柏林版吧. 基于此单元的TSocket类,大家可以很方便地封装出自己的服务端和客户端的SO ... 
- Android-操作系统拨打电话广播的处理
			Android操作系统的 packages/apps/phone/AndroidManifest.xml源码阅读 在之前的博客,Android-隐式意图激活操作系统通话界面,讲解了,阅读Android ... 
- 作业一:博客和Github简单练习
			(1)自我介绍 Hello everybody! 我叫纪杨阳,学号1413042002,网络工程141班. 本人没啥特殊的兴趣爱好,都是些平常得不能再平常的吃吃睡睡.要说感兴趣的,可能就是音乐和服饰还 ... 
- 用VC实现特定编辑框上对回车键响应
			一.引言 在通常的以CEditView为基类的单文档/多文档视图程序中,可以很好的响应键盘输入的回车键,只需比较最近两次的输入的字符,看看最新输入的字符是否内码是13(0x0d,回车键的内码)即可识别 ... 
- asp.net 导出 Excel 身份证格式显示格式问题
			<%# Eval("数据").ToString()+" " %> 加上 Excel 中 不会显示科学计数法 
- WindowsPhone模拟简易Toast弹出框
			Coding4Fun这个开源控件中有ToastPrompt这个弹出框组件,但是由于Coding4Fun太庞大,如果只用到ToastPrompt这个控件的话,整个引用不太值当的.于是自己写了一个差不多的 ... 
