软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 编程语言 -> 一起talkC栗子吧(第一百三十七回:C语言实例 -> 正文阅读

[编程语言]一起talkC栗子吧(第一百三十七回:C语言实例




各位看官们,大家好,上一回中咱们说的是exec系列函数的例子,这一回咱们说的例子是:查看环境变量。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前面介绍exec系列函数时提到过程序的运行环境,有些看官可能不太明白,今天我们一起来看看程序运行环境中的环境变量。环境变量在实际编写程序的时候经常使用,比如常用的PATH环境变量。有时候程序无法运行,就是环境变量错误引起的。
环境变量是操作系统提供的一种参数,程序可以通过这些参数来在操作系统中运行,它是本质上是键值对序列。
例如:SHELL=/bin/bash。

其中SHELL是环境变量的名称,它的值是等于号后面的内容,它提示我们运行的shell程序是/bin/bash。我们可以把SHELL看作键,等号后面的内容看作是值。这就是它的本质:键值对。
我们可以在终端中通过命令来查看当前的环境变量,常用的命令有echo,set和env.
环境变量有很多,比如我们常用的SHELL,PATH,可以使用echo命令来查看单个环境变量的值,前提是
你需要知道环境变量的名字。
$ echo $SHELL   //通过echo命令查看单个环境变量的值
/bin/bash
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

如果忘记环境变量的名字,也不要担心,我们可以使用set命令查看当前终端中的环境变量。
$  set //运行set命令
BASH=/bin/bash
HISTFILESIZE=2000
HISTSIZE=1000
HOME=/home/talk8
HOSTNAME=talk8-PC
HOSTTYPE=i686
LOGNAME=talk8

这里只选择了一些常见的环境变量,其它的环境变量就不一一列出了。
此外,env命令也可以查看环境变量,只是它比set命令查看的范围更加大一些。它可以查看到当前系统中所有的环境变量。
$  env //运行env命令
LC_PAPER=zh_CN.UTF-8
TERM=xterm
SHELL=/bin/bash
USER=talk8
USERNAME=talk8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
LANG=zh_CN.UTF-8
HOME=/home/talk8
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
XDG_SESSION_DESKTOP=default
LOGNAME=talk8

系统的环境变量比较多,这里只选择了一些常见的环境变量,其它的环境变量就不一一列出了。
台下已经有不少看官在终端中试验这些命令了,哈哈。不过大家不要忘记我们是talkC粟子呀,除了这些命令可以查看环境变量外,我们也可以在C程序中查看环境变量。
系统提供了getenv函数来查看环境变量,下面是该函数的原型:
     char *getenv(const char *name);
  • 函数只有一个参数,参数是字符指针,用来接收变量名;
  • 函数返回与变量名匹配的值,如果变量名不存在或者变量没有值,返回空指针;

下面是程序的核心代码,请大家参考
    char *env_key = "SHELL";
    char *env_value = NULL;

    env_value = getenv(env_key);

    if(NULL != env_value)
        printf("the value of %s is %s \n",env_key,env_value);
    else
        printf("there is not any value of %s \n",env_key);

在代码中我们通过getenv函数获取了环境变量SHELL的值,并且显示到终端中,下面是程序的运行结果:
the value of SHELL is /bin/bash 

大家可以看到,该结果和我们刚才使用echo命令得到的结果完全一致。
大家可能已经感觉到了,使用该函数需要提前知道环境变量名,这点和echo命令一样,有没有像set和env命令一样查看所有环境变量的函数。答案是没有。台下已经看官叹气了,哈哈。看官别失望。没有函数咱们可以自己写一个呀,自己写?怎么写?我给个提示:系统中所有的环境变量都存放在了一个叫environ的变量中,不过该变量是一个指向字符串的指针。它的定义如下:
char **environ;

现在大家明白如何了吗?咱们比一比谁写的快。下面是我写的代码:
    extern char ** environ;

    char ** env_array = NULL;
    env_array = environ;

    while(NULL != *env_array)
        printf("%s \n",*env_array++);

关于代码,我说几个需要注意的地方:
  • 我们在使用前需要先对environ变量进行声明。
  • 我们可以把该变量当作一个字符串数组,该数组的最后一个元素为空指针。
  • 明白这些后,显示环境变量就和遍历数组一样简单。

程序的运行结果,我就不列出了,相信大家已经自己完成了该程序。大家可以把该程序的运行结果和env命令的运行结果比较一下,你将会发现它们是完全相同的。
看官们,完整的代码放到了我的资源中,大家可以点击这里下载使用。
最后,我们总结一下查看环境变量的方法:
  • 使用Linux命令:echo,set和env.
  • 使用函数:getenv。该函数得到结果和echo相同。
  • 使用变量:environ。该变量得到的结果和env命令的结果相同。

各位看官,关于查看环境变量的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-03 20:43:25  
编程语言 最新文章
Java面试题(1)
ReactiveX序列——RxSwift
C++STL之ACM相关知识大全
c++中vector向量几种情况的总结(向量指针,
SSH框架整合demo
JAX
UVA
curl备忘(1)
C#机房重构——万事开头难(二)
OJ刷题
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-16 17:18:32
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --