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) , 哈 ...
随机推荐
- 7-linux-Centos7安装python3并与python2共存
转载自:https://www.cnblogs.com/JahanGu/p/7452527.html linux-Centos7安装python3并与python2共存 1.查看是否已经安装Pyt ...
- Oracle ADF 创建序列
双击VO,打开Attribute 标签页在弹出的窗口中选择Default Value Type 为“Expression”, value 的值为:(new oracle.jbo.server.Sequ ...
- python多线程编程5: 条件变量同步-乾颐堂
互斥锁是最简单的线程同步机制,Python提供的Condition对象提供了对复杂线程同步问题的支持.Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还 ...
- 基于etcd插件的CoreDNS动态域名添加
前提条件:已经有一个可用的etcd环境. 一.CoreDNS简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. ...
- RocketMQ 自定义文件路径
一 .1. 修改store路径2. 修改logs路径3. 修改rmq_bk_gc.log路径4. 修改rmq_srv_gc.log路径二 .1. 获取正确的rocketmq 源码2. 地址:https ...
- swift -pop的简单动画
//1.新建空文件 命名Podfile //2.写入 pod ‘pop’,’~>1.0’ 保存 //3.打开终端,进入项目路径 执行pod install //4.新建桥接头文件 导入#im ...
- [Selenium With C#基础教程] Lesson-02 Web元素定位
作者:Surpassme 来源:http://www.jianshu.com/p/cfd4ed1daabd 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 使用Selenium ...
- Xamarin 技术解析
Xamarin 是一套基于C#语言的跨平台移动应用开发工具,今年2月份微软宣布收购Xamarin,而后在4月份进行的Build大会上微软宣布将会在各个版本的Visual Studio中免费提供Xama ...
- [C#]DES再一例(转)
public class Encrypt { internal string ToEncrypt(string encryptKey, string str) { try { byte[] P_byt ...
- .NET框架源码解读之准备CLR源码阅读环境
微软发布了CLR 2.0的源码,这个源码是可以直接在freebsd和windows环境下编译及运行的,请在微软shared source cli(http://www.microsoft.com/en ...