博客
关于我
linux编程:getenv,putenv,setenv
阅读量:792 次
发布时间:2023-02-05

本文共 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)),则相当于删除环境变量。这种用法在某些情况下非常有用。
  • 转载地址:http://mlkfk.baihongyu.com/

    你可能感兴趣的文章
    Linux终端调试大全(非常详细)零基础入门到精通,收藏这一篇就够了
    查看>>
    Linux经典系统故障汇总与排障技巧及排障汇总表
    查看>>
    Linux经常使用命令(一) - ls
    查看>>
    Linux经常使用命令(十一) - more
    查看>>
    Linux经常使用命令(十二) - less
    查看>>
    linux经常使用(一)linux 安装配置 jdk之 找不到安装文件文件夹及source /etc/profile 报unexpected end of file 错误 解决...
    查看>>
    Linux给/根目录直接扩容_Linux直接给系统盘扩容_Mysql数据盘满了_不用外挂数据盘_迁移mysql数据_直接扩容---Linux工作笔记073
    查看>>
    linux给用户改变组,Linux用户及用户组的建立,修改和删除
    查看>>
    linux给用户添加sudo权限
    查看>>
    linux缓存nscd
    查看>>
    linux编写一个简单的端口扫描程序,LINUX端口扫描源代码(C实现)
    查看>>
    linux编程之信号量
    查看>>
    LINUX编程实战指发送UDP消息
    查看>>
    linux编程:getenv,putenv,setenv
    查看>>
    linux编译ffmpeg2.6.2
    查看>>
    Linux编译FFmpeg支持x265(HEVC) 【failed on redhat 6.5】(updated)
    查看>>
    linux编译动态库时,libcrypto.a 提示recompile with -fPIC
    查看>>
    linux编译升级应用,Linux如何升级软件版本
    查看>>
    linux编译注解
    查看>>
    linux网络启动报错
    查看>>