Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1814737
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 系统运维

2012-03-29 12:52:07

每个程序还被传入一个环境列表。就像参数列表那样,环境列表是一个字符指针的数组,每个指针包含一个以null终止的C字符串的地址。这个指针数组的地址包含在全局变量environ里:


extern char **environ;


例如,如果环境由5个字符串组成,那environ就指向一个长度为5的指针数组。数组里的每个地址都指向一个如“HOME=/home/tommy\0”形式的字符串。这里显式地给出最后的终止符。


我们称environ为环境指针,称指针数组为环境列表 。称它们指向的字符串为环境字符串。


根据协议,环境由字符串name=value组成。多数预定义的名字是完全大写的,但这只是一个协议而已。 


历史上,多数UNIX系统 ,为main函数提供第三个参数,它是环境列表的地址:


int main (int argc, char *argv[], char *envp[]);


因为ISO C指出,main 函数有两个参数,而又因为第三个参数没有提供比全局变量environ更好的功能,所以POSIX.1 指出environ应该用来代替那个(可能的)第三个参数。访问特定的环境变量通常是通过getenv和putenv函数,在7.9节讨论,而不是通过 environ变量。然而要遍历整个环境变量,environ指针必须被使用。

阅读(943) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~