IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++程序环境变量使用 -> 正文阅读

[C++知识库]C++程序环境变量使用

1. 永久改变环境变量

修改如下两个文件中的任意一个即可

1. /etc/profile?

2 .bash_profile

其中,/etc/profile是全局的环境变量,对所有用户生效,而.bash_profile只对当前用户起作用。

2. 在程序外临时设置环境变量

2.1. 对所有程序设置变量

export命令
功能:设置或显示环境变量
语法:export [-fnp] [变量名称]=[变量值]
说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
参数:?

-f ? 此时变量名称为函数名称。
-n?? 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p?? 列出所有的环境变量。

举例:?

export PRJROOT=/home/eriol/newproject
export PREFIX=${PRJROOT}/tools
export PATH=${PATH}:${PREFIX}/bin
export LD_LIBRARY=/usr/local/lib

Linux系统环境变量中,路径名用冒号分隔。
注意:export设置只对当前的bash登录session有效,它是存在内存里面的

2.2. 对单个程序设置变量

在程序运行命令前设置,例如

GLOG_v=4 ./bin/executor

这样可执行文件即可获取这个宏定义

3. 程序获取环境变量

函数名:?getenv

功 能:?从环境中取字符串,获取环境变量的值

头文件:?stdlib.h

用 法:char *getenv(char *envvar);

函数说明:getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为envvar=value。getenv函数的返回值存储在一个全局二维数组里,当你再次使用getenv函数时不用担心会覆盖上次的调用结果。

返回值:?执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。如果变量存在但无关联值,它将运行成功并返回一个空字符串,即该字符的第一个字节是null。

相关函数:_wgetenv、getenv_s、_wgetenv_s

4. 程序内部设置环境变量

putenv 函数用来向环境表中添加或者修改环境变量。

函数原型:

函数参数:

  • string:指向环境变量的指针,其中环境变量必须以 "name=value" 的形式给出

返回值:

  • 调用成功返回 0
  • 调用失败时返回 非0 值

如果环境表中没有 name 这个环境变量,则添加该环境变量;如果环境表中已经有了name这个环境变量,则先删除之前的 value,再修改为新的 value。

setenv 函数和putenv 函数功能类似,可以用来添加或修改环境变量。

函数原型:

函数参数:

  • name:环境变量名
  • value:环境变量值
  • overwrite:重写选项,当 name 在环境表中存在时,如果 overwrite 的值为 0 ,则不修改name的值;如果 overwrite 的值为 非0,则修改name的值。

返回值:

  • 调用成功返回 0
  • 调用失败时返回 非0

putenv 函数和 setenv 函数虽然功能类似,但是这两个函数在实现方面还是有区别的,区别如下:

putenv函数:

putenv 函数会将参数 string 直接填写到环境表中,不会再为 "name=value" 这个字符串再去分配内存。如果是在一个函数中定义的string,那么在调用该函数后,string 指向的内容可能会被释放,就找不到name环境变量的值了。

setenv 函数:

setenv 函数和 putenv 函数不同,它会将name和value指向的内容复制一份并为其分配内存,形成 "name=value" 的字符串,并将其地址写入到环境表中。所以就不会出现上面putenv 的情况,就算函数返回了,name 和 value指向的内容被释放了,仍然有一份拷贝在。

参考文献

C++---之环境变量的设置_锥子A的博客-CSDN博客_c++ 环境变量

进程环境---getenv、putenv和setenv函数详解_微尘hjx的博客-CSDN博客_putenv

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:22:52  更:2022-05-09 12:23:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:55:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码