【第22期】观点:IT 行业加班,到底有没有价值?

linux环境有关编程(2)

原创 2012年03月30日 11:34:55

C语言通过putenv和getenv函数来访问环境变量。

#include<stdlib.h>

char *getenv(const char *name);

int putenv(const char *string);

环境是由一组格式为“名字=值”的字符串组成。

getenv函数以给定的名字搜索环境中的一个字符串,并返回与该名字相关的值。如果请求不存在,就返回NULL。

由于getenv返回的字符串存储在静态空间,所以想进一步利用它,就必须拷贝出来。

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

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

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);
}

./environ HOME

Variable HOME has value /home/zq

./environ qq

Varliable qq has no value

./environ zq qq

Varliable zq has no value

Calling putenv with: zq=qq

New value of zq is qq

./environ zq

Varliable zq has no value 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

linux嵌入式编程高手历程系列2-安装debian并建立嵌入式编译环境

作者:highlo 转自:http://blog.csdn.net/highlo/article/details/2112752        debian是linux著名的发行套件。在接...

Linux环境编程简明教程(2)字符串相关操作

事实上,字符串操作,不能算是Linux环境编程的一部分。但由于Linux环境编程,基本就是对C语言函数库的编程,所以对于字符串的理解是必不可少的。 strcasecmp 函数原型:int strcasecmp(const char *s1, const char *s2) 函数功能:不考虑...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法汇总

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法 文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008617/1...

linux环境下的c++编程

就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样。Emacs, vi, eclipse, anjuta,kdevelop等层出不穷。 Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户。例...
  • isiqi
  • isiqi
  • 2011-05-25 22:55
  • 455

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法

文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008617/126036.html相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《...
  • xuorui
  • xuorui
  • 2010-04-03 14:25
  • 1858
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)