linux编程:getenv,putenv,setenv
发布日期: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。

示例代码

#include 
int 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。

示例代码

#include 
int 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。

示例代码

#include 
int 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)

说明

  • unsetenv函数用于删除或清除环境变量的值。其作用与setenv类似,但通常不会设置新的值。
  • 如果overwrite参数为0,并且value为空(如setenv("USER", "", 0)),则相当于删除环境变量。这种用法在某些情况下非常有用。
  • 上一篇:linux编译ffmpeg2.6.2
    下一篇:LINUX编程实战指发送UDP消息

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年04月26日 21时51分24秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章