进程环境---getenv、putenv和setenv函数详解
来源:互联网 发布:淘宝手机客户端怎么下 编辑:程序博客网 时间:2024/05/22 13:54
在Linux中的c程序的典型内存分布中,之前提到的有 text段、data段、bss段、堆和栈这几部分,在笔记“麦子学院c语言->典型c语言程序的c内存分布”中介绍了。但是其实一个c语言进程的内存分布中不止是有这些区域,还有命令行参数、环境变量以及共享库和mmap映射区等区域。如下图所示
------------------------------
环境变量区域
命令行参数
栈
共享库和mmap映射区
堆
bss段
data段
text段
-------------------------------
=====================================================
通常环境变量是通过 name=value 的形式给出的,使用 environ 指针打印出的所有的环境变量的形式就是如此。使用 getenv 函数可以通过给出 name 来获得 value 的值。
函数原型:
函数参数:
- name:想要获取的环境变量名
返回值:
- 调用成功返回指向 value 的指针
- 调用失败返回 NULL
=====================================================
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指向的内容被释放了,仍然有一份拷贝在。
阅读全文
0 0
- 进程环境---getenv、putenv和setenv函数详解
- getenv、putenv和setenv函数
- getenv,putenv,setenv函数
- getenv putenv setenv和unsetenv详解
- getenv putenv setenv和unsetenv详解
- getenv putenv setenv和unsetenv详解
- getenv putenv setenv和unsetenv详解
- getenv putenv setenv和unsetenv详解 .
- getenv putenv setenv和unsetenv详解
- getenv putenv setenv和unsetenv详解
- getenv setenv putenv unsetenv 使用详解
- getenv/putenv/setenv/unsetenv
- linux编程:getenv,putenv,setenv
- linux设置环境变量putenv() setenv() getenv()(ZZ)
- linux设置环境变量putenv() setenv() getenv()
- php函数 getenv()与putenv()和$_SERVER
- getenv、setenv函数
- linux下getenv、putenv、setenv获取设置环境变量
- react-router
- C语言·可变参数列表
- js计算月份代码 上个月-下个月
- whl包的安装
- Bean都初始化完成后,实现ApplicationListener<ContextRefreshedEvent>接口
- 进程环境---getenv、putenv和setenv函数详解
- 弹幕实现andrond
- 事件分发
- Android 阴影效果 ShadowLayer
- Java基础语法篇(1)
- Android数据库高手秘籍(一)——SQLite命令
- 阿里云DDoS高防IP原理及价格
- word2vec原理分析与代码公式详解
- 后起之秀:Kotlin