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下c/c++编程环境搭建

Ubuntu中没用自带C/C++开发环境,需要用户自己配置。在UBUNTU中文论坛中的一些帖子集合。 一、安装基本开发环境 本人想学习一下Linux下的C,C++程序开发,这几天一直在研究...
  • baidu_28563321
  • baidu_28563321
  • 2015年06月05日 10:18
  • 1658

linux环境下C编程(二)

c语言中的提供了一组标准函数来解决常见的问题 每个标准函数都有自己的名字 printf标准函数把数据打印在屏幕上 为了使用这个标准函数需要包含stdio.h文件 使用标准函数需要写出函数名 ...
  • chentongxin321
  • chentongxin321
  • 2014年02月08日 21:03
  • 797

Linux环境下的IDE,极大提升编程效率

"一个真正的程序员是不用IDE(译者注:集成开发环境)的,他们都是用带着某某插件的文本编辑器来写代码。"我们总能在某些地方听到此类观点。然 而,尽管越来越多的人同意这样的观点,但是一个IDE仍然非常有...
  • XG_2013
  • XG_2013
  • 2016年08月01日 15:19
  • 2736

Linux下C++的编程——开发环境搭建与第一个程序

上一篇文章Linux下C++的编程——开偏介绍中我们已经介绍了GUN、GCC、G++等一些重要的概念,现在应该开始动手实践了!开发工具的安装环境 Distributions版本:CentOS 6.7...
  • luoweifu
  • luoweifu
  • 2015年12月06日 20:40
  • 24473

Linux系统编程——进程介绍

一、进程概述 我们平时写的 C 语言代码,通过编译器编译,最终它会成为一个可执行程序,当这个可执行程序运行起来后(没有结束之前),它就成为了一个进程。 程序是存放在存储介质...
  • lianghe_work
  • lianghe_work
  • 2015年06月23日 20:15
  • 1465

NJUPT GNU/Linux编程 实验1-6总结(走过的坑)

课程小结:总结实验中一些踩过的坑。
  • think_ycx
  • think_ycx
  • 2015年12月28日 20:02
  • 861

Linux - Unix环境高级编程(第三版) 代码编译

Unix环境高级编程(第三版) 代码编译本文地址:http://blog.csdn.net/caroline_wendy时间:2014.10.21. 下载代码:http://www.apuebook....
  • u012515223
  • u012515223
  • 2014年10月02日 23:31
  • 3339

windows7中配置linux开发环境

接触背景:合并Android应用apk,一款游戏需要在不同的平台上线,那么就要接各个平台的sdk。 我们公司做了一个sdk,用来完成接入我们的sdk就能完成接入n多个我们接好的平台的任务(我们的sdk...
  • gongxiaoou
  • gongxiaoou
  • 2016年02月22日 11:59
  • 600

linux下C编程详解

linux操作系统下c语言编程整理编写:007xiong原文:Hoyt等(一)目录介绍1)Linux程序设计入门--基础知识2)Linux程序设计入门--进程介绍3)Linux程序设计入门--文件操作...
  • t12x3456
  • t12x3456
  • 2013年09月23日 23:41
  • 6471

【Linux&C++】Linux环境下C++编程

在阅读的过程中有任何问题,欢迎一起交流 邮箱:1494713801@qq.com   QQ:1494713801   在linux下,开发工具被切割成一个个独立的小工具。各自处理不同的问题。例如: ...
  • u010515761
  • u010515761
  • 2015年06月18日 16:03
  • 1436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux环境有关编程(2)
举报原因:
原因补充:

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