getenv/putenv/setenv/unsetenv
来源:互联网 发布:如何在淘宝上交水电费 编辑:程序博客网 时间:2024/05/22 18:22
Linux环境变量操作函数
getenv - get an environment variable
#include <stdlib.h>char *getenv(const char *name);//Returns:与name相关的value的指针, NULL if not found
- 我们应该总是使用
getenv
来获取环境的特殊值,而不是直接访问environ
- 下章我们会知道我们可以仅仅影响当前进程和其子进程的环境
- 我们不能影响父进程的环境,父进程经常是shell
- 环境变量删除容易,增加难(栈上面存放环境变量的空间是无法扩充的)
ISO C没有定义任何环境变量。一些环境变量是由单一Unix规范的POSIX.1定义的。
单一Unix规范定义的环境变量如下:
putenv - change or add an environment variable
#include <stdlib.h>int putenv(char *string);int setenv(const char *name, const char *value, int overwrite);int unsetenv(const char *name);//Returns: 0 if OK, nonzero on errorint clearenv(void);
putenv
:用形式为name=value
的字符串放入环境列表,如果已经存在,则替换旧值 setenv
:set name
to value
. 如果name
已经存在,若overwrite
为真,已经存在的值被覆盖。如果overwrite
为假,name
不变,name
值不变为value
,且不产生error unsetenv
:移除任何name
的定义。如果定义(definition)不存在,不产生错误 clearenv
:移除environment list
的所有entries
putenv和setenv的区别
- setenv必须分配空间给
name = value
string - putenv是直接将参数传给环境
- 如果
putenv
传入的string是在stack
上分配的,会出错。
修改、增加环境变量的几种情况
- 如果我们修改环境变量
- 新值尺寸小于等于旧值尺寸,直接复制
- 反之,
malloc
获得新string的空间,替代环境列表中旧的指针
- 增加新name
- 第一次增加新值,在heap上给
environment list
分配空间 - 不是第一次,之前已经为
环境列表
在heap上分配了新空间,直接调用realloc
分配更大的空间来保存更多的pointer
- 第一次增加新值,在heap上给
0 0
- 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 putenv setenv和unsetenv详解
- getenv setenv putenv unsetenv 使用详解
- getenv,putenv,setenv函数
- putenv,setenv,unsetenv的使用
- putenv,setenv,unsetenv 的使用
- putenv,setenv,unsetenv 的使用
- linux编程:getenv,putenv,setenv
- getenv、putenv和setenv函数
- Linux 系统 putenv,setenv,unsetenv 使用
- Linux C函数环境变量(env)setenv unsetenv putenv unsetenv
- linux设置环境变量putenv() setenv() getenv()(ZZ)
- 将Lua解释器移植到STM32
- python之强大的日志模块
- 如何在windows下使用putty连接VirtualBox中的Linux
- linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet
- AngularJS进阶(三十三)书海拾贝之简介AngularJS中使用factory和service的方法
- getenv/putenv/setenv/unsetenv
- starUML 2.5.1 for mac
- libcurl 静态编译及初步使用(Linux环境)
- x86平台 通过反汇编简单的从程序,分析理解计算机是如何工作的。
- (p138)非递归完成二叉树的遍历
- 1102. Invert a Binary Tree (25)
- 既能作为Application执行,又能作为Applet程序执行
- tcp三次握手和time wait --- 转
- 虚拟机下Linux系统root登陆