Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19882512
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: LINUX

2008-12-02 11:08:26

§4.      环境变量

语法:

#include

char *getenv(const char *name);

int putenv(const char *string);

         如果获取的变量不存在,getopt返回null,如果变量存在,但是没有设置值,返回空字符串。结果存储在静态存储中。Putenv如果没有可用内存,返回-1, errno设置为ENOMEM

         改变的变量仅仅局部有效。

实例:设置读取变量

 

# cat environ.c

//  1  The first few lines after the declaration of main ensure that the program, environ.c, has been called correctly.

 

#include

#include

#include

 

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

{

    char *var, *value;

 

    if(argc == 1 || argc > 3) {

        fprintf(stderr,"usage: environ var [value]\n");

        exit(1);

    }

 

//  2  That done, we fetch the value of the variable from the environment, using getenv.

 

    var = argv[1];

    value = getenv(var);

    if(value)

        printf("Variable %s has value %s\n", var, value);

    else

        printf("Variable %s has no value\n", var);

 

//  3  Next, we check whether the program was called with a second argument. If it was, we set the variable to the value of that argument by constructing a string of the form name=value and then calling putenv.

 

    if(argc == 3) {

        char *string;

        value = argv[2];

        string = malloc(strlen(var)+strlen(value)+2);

        if(!string) {

            fprintf(stderr,"out of memory\n");

            exit(1);

        }

        strcpy(string,var);

        strcat(string,"=");

        strcat(string,value);

        printf("Calling putenv with: %s\n",string);

        if(putenv(string) != 0) {

            fprintf(stderr,"putenv failed\n");

            free(string);

            exit(1);

        }

 

//  4  Finally, we discover the new value of the variable by calling getenv once again.

 

        value = getenv(var);

        if(value)

            printf("New value of %s is %s\n", var, value);

        else

            printf("New value of %s is null??\n", var);

    }

    exit(0);

}

 

环境变量的语法:

#include

extern char **environ;

 

 

实例:读取环境变量

# cat showenv.c

#include

#include

 

extern char **environ;

 

int main()

{

    char **env = environ;

 

    while(*env) {

        printf("%s\n",*env);

        env++;

    }

    exit(0);

}

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