
linux编程:getenv,putenv,setenv
unsetenv函数用于删除或清除环境变量的值。其作用与setenv类似,但通常不会设置新的值。 如果overwrite参数为0,并且value为空(如
发布日期:2025-04-10 07:05:17
浏览次数:7
分类:精选文章
本文共 1794 字,大约阅读时间需要 5 分钟。
环境变量管理函数说明
1. getenv函数
getenv函数用于获取环境变量的值。该函数接受一个字符串参数name,表示环境变量的名称。如果环境变量name存在,则返回指向该变量值的指针;如果不存在,则返回NULL。
函数定义
char * getenv(const char *name);
函数说明
getenv函数会根据环境变量名查找对应的值。环境变量的格式通常为name=value。例如,USER=root
表示环境变量USER的值为root。
返回值
- 成功获取环境变量值时,返回指向该值的指针。
- 未找到对应环境变量时,返回NULL。
示例代码
#includeint main() { char *p; if ((p = getenv("USER")) != NULL) { printf("USER=%s\n", p); } return 0;}
执行结果:
USER=root
2. putenv函数
putenv函数用于修改或新增环境变量的值。参数string的格式为name=value。如果环境变量name已存在,则更新其值;否则,新增该环境变量。
函数定义
int putenv(const char *string);
函数说明
putenv函数通过解析string参数来设置或修改环境变量。解析规则如下:
- 如果string中包含'='',则name为前部分,value为后部分。
- 如果string不包含'='',则name为整个字符串,value为空。
返回值
- 成功修改或新增环境变量时,返回0。
- 发生错误(如解析失败或权限不足)时,返回-1。
示例代码
#includeint main() { // 获取当前USER值 char *p = getenv("USER"); printf("USER=%s\n", p); // 修改USER值为test putenv("USER=test"); // 再次获取USER值 p = getenv("USER"); printf("USER=%s\n", p);}
执行结果:
USER=rootUSER=test
3. setenv函数
setenv函数用于设置或修改环境变量的值。该函数接受三个参数:name(环境变量名称)、value(变量值)、overwrite(控制是否覆盖现有值)。
函数定义
int setenv(const char *name, const char *value, int overwrite);
函数说明
setenv函数根据overwrite参数决定是否覆盖现有环境变量:
- 如果overwrite不为0,且环境变量name已存在,则更新其值为value。
- 如果overwrite为0,且环境变量name已存在,则忽略value参数,保持现有值。
- 如果环境变量name不存在,则创建该变量,并设置值为value。
返回值
- 成功修改或新增环境变量时,返回0。
- 发生错误(如权限不足或无效参数)时,返回-1。
示例代码
#includeint main() { // 获取当前USER值 char *p = getenv("USER"); printf("USER=%s\n", p); // 修改USER值为test,并覆盖现有值 setenv("USER", "test", 1); // 修改USER值为空(相当于删除环境变量) setenv("USER", "", 0); // 检查USER值 p = getenv("USER"); printf("USER=%s\n", p);}
执行结果:
USER=rootUSER=testUSER= (null)
说明
setenv("USER", "", 0)
),则相当于删除环境变量。这种用法在某些情况下非常有用。发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月26日 21时51分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux系统编程:深入理解计算机软硬件体系和架构
2023-02-05
Linux系统调优实战
2023-02-05
Linux系统调用分析
2023-02-05
Linux系统轻量应用服务器CPU使用率高的排查与解决方案
2023-02-05
Linux系统通过netstat查看网络状态、端口状态
2023-02-05
Linux系统配置静态IP地址步骤
2023-02-05
linux系统重命名文件名,但文件名有空格如何处理
2023-02-05
linux线程
2023-02-05
linux线程同步的含义,Linux线程同步——条件变量
2023-02-05
Linux线程编程之生产者消费者问题
2023-02-05
Linux终端调试大全(非常详细)零基础入门到精通,收藏这一篇就够了
2023-02-05
Linux经典系统故障汇总与排障技巧及排障汇总表
2023-02-05
Linux经常使用命令(一) - ls
2023-02-05
Linux经常使用命令(十一) - more
2023-02-05
Linux经常使用命令(十二) - less
2023-02-05
linux经常使用(一)linux 安装配置 jdk之 找不到安装文件文件夹及source /etc/profile 报unexpected end of file 错误 解决...
2023-02-05
linux给用户改变组,Linux用户及用户组的建立,修改和删除
2023-02-05
linux给用户添加sudo权限
2023-02-05