依睛(IT blog) 我回来了,PHP<-->C/C++ LINUX

笨鸟

统计

积分与排名

友情连接

最新评论

Linux如何处理当前运行环境的环境变量

Linux如何处理当前运行环境的环境变量


 

2006-10-19 00:00 作者: 出处: 天极博客 责任编辑:原野


setenv(set environment variable)

功能说明:查询或显示环境变量。

语  法:setenv [变量名称][变量值

  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  
   “,*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 (“accessing server %s  
   ”,server_name); 
   
   return 0; 
  } 

																

源地址:
http://os.yesky.com/lin/318/2623818.shtml


=============================================================================================


linux c 环境控制篇

getenv(取得环境变量内容)
相关函数
putenv,setenv,unsetenv
表头文件
#include<stdlib.h>
定义函数
char * getenv(const char *name);
函数说明
getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。
返回值
执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。
范例
#include<stdlib.h>
mian()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER=%sn”,p);
}
执行
USER = root
 



putenv(改变或增加环境变量)
相关函数
getenv,setenv,unsetenv
表头文件
#include4<stdlib.h>
定义函数
int putenv(const char * string);
函数说明
putenv()用来改变或增加环境变量的内容。参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。
返回值
执行成功则返回0,有错误发生则返回-1。
错误代码
ENOMEM 内存不足,无法配置新的环境变量空间。
范例
#include<stdlib.h>
main()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER =%sn”,p);
putenv(“USER=test”);
printf(“USER+5sn”,getenv(“USER”));
}
执行
USER=root
USER=root
 



setenv(改变或增加环境变量)
相关函数
getenv,putenv,unsetenv
表头文件
#include<stdlib.h>
定义函数
int setenv(const char *name,const char * value,int overwrite);
函数说明
setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
参数
value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。
返回值
执行成功则返回0,有错误发生时返回-1。
错误代码
ENOMEM 内存不足,无法配置新的环境变量空间
范例
#include<stdlib.h>
main()
{
char * p;
if((p=getenv(“USER”)))
printf(“USER =%sn”,p);
setenv(“USER”,”test”,1);
printf(“USER=%sn”,getenv(“USEr”));
unsetenv(“USER”);
printf(“USER=%sn”,getenv(“USER”));
}
执行
USER = root
USER = test
USER = (null)

posted on 2007-08-07 21:55 向左向右走 阅读(611) 评论(0)  编辑 收藏 引用 所属分类: Linux 学习库UNIX???问的睛

只有注册用户登录后才能发表评论。