dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>操作系统>linux>文章内容
Linux 应用程序如何处理当前运行环境的环境变量
来源:未知     作者:    
GNU/Linux下面每个程序运行都有一个所谓的运行环境,这里的环境实际上就是一组变量的定义。所有的变量和他们的值都是字符串形式表达的。通过转换,通常变量名字都是用大写字符表达。

对于环境变量大家都不陌生,例如,我们都很熟悉的HOME这个环境变量,这个变量指示的当前用户的个人用户目录的路径。又例如,PATH这个环境变量,它指示出当前Linux系统搜索的的执行文件的路径列表。

对于我们在Linux下常用的BASH这个shell程序,它有自己的一套管理环境变量的方法。例如,通过$NAME来访问相应的环境变量,通过export来设置环境变量,下面是一个实例:

[hwang@langchao linuxprogram]$ echo $HOME
/home/hwang
[hwang@langchao linuxprogram]$ export MYNAME="Luster"
[hwang@langchao linuxprogram]$ echo $MYNAME
Luster
[hwang@langchao linuxprogram]$

而在我们的应用程序里面,如果需要访问一个环境变量,我们可以通过getenv()这个函数来实现,getenv这个在这个头文件中声明。这个函数的输入参数是需要访问的变量名字,得到的返回值是一个字符串,如果所访问的环境变量没有设置,则会返回NULL。如果需要在程序里面设置某个环境变量,则可以使用setenv这个函数,如果是要清除某个特定的环境变量,则使用unsetenv这个函数。它们的原型如下:

#include
char *getenv(const char *name);
int setenv(const char *name, const char *value, int overwrite);
void unsetenv(const char *name);


值得一提的是,GNU C库里面有一个特殊的全局的变量,名字叫做environ,这个变量的类型是char **,它所指向的是所有的环境变量的一个列表,最后是以NULL结尾。每个字符串都是“VALUE=value”这样的形式。例如下面的程序可以打印出当前运行环境里面的所有的环境变量:
#include
extern char**environ;
int main ()
{
char**var;
for (var =environ;*var !=NULL;++var)
printf (“%s \n “,*var);
return 0;
}

注意,如果你需要修改某个环境变量,不要直接修改environ这个变量,而应该使用setenv或者unsetenv这样的管理来做这件事情。

一般来说,当一个程序启动的时候,它就会拷贝一份启动它的“父”程序所拥有的环境变量。环境变量是GNU程序常用来配置某个应用程序的行为的一个方法,例如,通过环境变量来设置HTTP代理服务器的地址和端口号等等。下面是一段代码的演示:

#include
#include
int main ()
{

char *server_name =getenv (“SERVER_NAME ”);
if (server_name ==NULL)
server_name =“server.my-company.com ”;
printf (“ing server %s \n ”,server_name);
return 0;
}

 

 

上一篇:Linux 内核原代码 head.s 部分注释   下一篇:Linux 内核原代码 boot.s 部分的注释
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Linux常用基本命令及应用技巧
·写得蛮好的linux学习笔记
·学会在Linux下对硬盘分区
·找回Redhat的超级用户密码
·Linux下C语言编程
·GDB教程
·Cron服务配置详解
·Linux与Unix二大操作系统编程的
·Linux 2.6 内核的嵌入式系统应用
·Linux和Windows系统调用的比较
·vim命令(一)
·vim 命令(二)
  相关文章
·Linux 内核原代码 head.s 部分注
·Linux 内核原代码 boot.s 部分的
·linux 内核原代码 sched.c 的注
·Linux 内核原代码 init/main 的
·编写 Linux 操作系统下的设备驱
·Linux 内核模块和驱动程序的编写
·Linux 下面截获系统调用
·Linux 最新稳定内核 2.4.x 的网
·Linux 下面使用 mtrace 来检查一
·为 Linux 应用程序编写 DLL
·Linux 和 Unix 安全编程:环境变
·基于Linux的网络数据帧捕获方法
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763