7.5.环境列表(Environment List)

来源:互联网 发布:it命令 编辑:程序博客网 时间:2024/04/19 15:08

7.5.环境列表(Environment List)

每一个程序也被传入一个环境列表。象参数列表(argument list)一样,环境列表也是一个字符指针的数组,其中每个指针指向一个以null结束的C字符串(null-terminated C string)。这个指针数组的地址被包含在全局变量environ中:
extern char **environ;
例如,如果环境由五个字符串组成,环境列表可能看起来象图7.5所示的那样。图中我们在每个字符串的末尾显式地表示出了null bytes。我们将把environ叫做环境指针(environment pointer),把指针数组叫做环境列表(environment list),把环境列表指向的字符串们叫做环境字符串(environment strings)。


图7.5.由5个C字符串组成的环境

按照惯例,环境由这样的字符串组成:name=value,就如同在图7.5中看到的那样。大多数人预先确定了name为全部大写,但是这仅是一个惯例。
一直以来,大部分的UNIX系统一直提供了第3个参数给main函数,这第3个参数就是环境列表的地址。如:
int main(int argc, char *argv[], char *envp[]);
因为ISO C指定了main函数只能用2个参数,但是因为提供第3个参数与使用全局变量environ相比,并没有什么优势,所以POSIX.1指定environ代替第3个参数envp。7.9节将会描述到,对某特定环境变量的存取正常情况下是通过函数getenv和putenv,而不是通过变量environ。但是要go through所有的环境,必须使用环境指针environ。


原创粉丝点击