Linux系统编程——环境列表

本节详细介绍一下很唬人的“环境列表”,在初学计算机知识的时候,我们对环境列表会感到非常陌生,有时候我们在安装各中

应用软件时,有时也需要配置一下环境变量,那到底环境变量都存了些什么东西呢,今天就一一解开这些谜团

什么是环境变量:

每一个进程都有与其相关的称之为环境列表的字符串数组,也可以简称为环境,其中每个字符串都以名称=值形式定义,因此环境是“名称-值”的成对集合,可存储任何信息,所以也把列表中的名称称为环境变量。每个程序都会接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个指针包含一个以null结束的C字符串的地址。全局变量environ则包含了该指针地址:

Linux系统编程——环境列表_第1张图片

在C语言程序中,我们可以使用全局变量char**environ访问环境列表。(c运行时启动代码定义了该变量,并以环境列表位置为其赋值)

获取某个环境变量值

#include

char* getenv(const char *name)

//name 是环境变量名,该函数返回对应环境变量的值。

修改环境变量

有时,修改环境变量很有用处,是因为修改后对该进程后续创建的所有子进程均可见,另一个可能的原因在于设定某一环境变量,以求对于将要载入进程内存的新程序可见,从这个意义上讲,环境变量不仅是一种进程间通信的形式。还是程序间通信的形式。

#include

int putenv(char*string)

putenv()函数调用失败返回非0值。

string 是一个指向name=value的形式的字符串,注意的是string参数不应为自动变量(即不能是在栈中分配的字符数组),因为定义此变量的函数返回后,所指区域就被回收了。

#include

int setenv(const char*name,const char*value,int overwrite);

overwrite:此值若为0的话,若name所指环境变量存在,则不修改,若此值非0,则总是改变环境变量。

name:环境变量名

value:环境变量值

返回值;成功返回0,失败返回-1

#include

int unsetenv(const char *name);

参数name为环境列表名,该函数的作用就是从环境中移除name环境变量。

返回值;成功返回0,失败返回-1

#define _BSD_SOURCE

#include

int clearenv(void)

此函数是清空整个环境变量,然后以所选之进行重建,例如为了以安全的方式执行set-user-ID程序,就需要这样做。

 

 

 

你可能感兴趣的:(Linux)