环境变量相关函数:

getenv()和putenv()

代码示例【Linux程序设计(4th)_4.2小节配套代码】:

程序功能:编写一个程序来打印所选的任意环境变量的值;如果给程序传递第二个参数,还设置环境变量的值
// 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> /************************
argc:参数个数(包含程序名)
argv:代表参数自身的字符串数组;
argv[0]为程序名,argv[1]为第1个实际参数 argv[2]为第2个实际参数
************************/ int main(int argc, char *argv[])
{
char *var, *value; if(argc == || argc > ) { //确保实际参数只有1个(argc=2)或2个(argc=3)
fprintf(stderr,"usage: environ var [value]\n");
exit();
} // 2 That done, we fetch the value of the variable from the environment, using getenv. var = argv[]; //第一个实际参数的参数名
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 == ) { //如果第二个实际参数存在
char *string;
value = argv[]; //获取第2个参数的值
string = malloc(strlen(var)+strlen(value)+); //为第二个参数的“参数名=参数值”开辟空间(+2表示“=”和空格)
if(!string) { //如果开辟空间失败
fprintf(stderr,"out of memory\n");
exit();
}
strcpy(string,var);
strcat(string,"=");
strcat(string,value);
printf("Calling putenv with: %s\n",string);
if(putenv(string) != ) { //putenv()成功返回0.若环境变量设置失败
fprintf(stderr,"putenv failed\n");
free(string); //释放开辟的内存空间
exit();
} // 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();
}

注意:环境仅对程序本身有效。在程序里做的环境变量更改不会反映到外部环境,这是因为变量的值不会从子进程(你的程序)传播到父进程(shell)

linux 环境变量函数getenv()和putenv()的使用的更多相关文章

  1. Linux学习笔记之Linux环境变量总结

    0x00 概述 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量. 0x01 Linux环境变量分类 按照生命周期来分,Lin ...

  2. Linux环境变量总结 转

    转自https://www.jianshu.com/p/ac2bc0ad3d74 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境 ...

  3. 环境变量篇getenv putenv setenv

    getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdlib.h> 定义函数 char * getenv(const ...

  4. linux 环境变量【转】

    1.引言 在 linux系统 下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现" command not found "的提示内容.如果每次都到安装目标文件夹内,找到可 ...

  5. 【转】linux环境变量设置

    1. 显示环境变量HOME $ echo $HOME /home/terry 2. 设置一个新的环境变量WELCOME $ export WELCOME="Hello!" $ ec ...

  6. Linux 环境变量和source命令 (转)

    可能是班门弄斧了,仅share给尚不知道的童鞋. 1.       问题的来源: 为什么我们编译Android代码时,需要输入:  source ./build/envsetup.sh  或者 . . ...

  7. Linux环境变量总结

    现在每天测试到时候会与Linux打交道,自然也会用到环境变量了.看了网上几篇文章,结合自己到实践和看法,总结以下Linux的环境变量吧.一.什么是环境变量?环境变量相当于给系统或用户应用程序设置的一些 ...

  8. LINUX 环境变量总结

    1.概述 Linux是一个多用户的操作系统.多用户意味着每个用户登录系统后,都有自己专用的运行环境.而这个环境是由一组变量所定义,这组变量被称为环境变量.用户可以对自己的环境变量进行修改以达到对环境的 ...

  9. linux环境变量 shell变量 command not found解决方法(转)

    在Ubuntu.centos中有如下几个文件可以设置环境变量1./etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文 ...

随机推荐

  1. $Django 路飞之显示视频,Redis存购物车数据,优惠卷生成表,优惠卷的一个领取表。(知识小回顾)

    知识小回顾之json序列化问题 精髓:支持python的几种数据类型(注意不是对象,不能放对象),其次是tuple变list. ensure_ascii:默认值True,如果dict内含有non-AS ...

  2. centos7.5环境下编译安装php7.0.30并安装redis和mongo扩展

    .安装php7..30的脚本 # vim install_php.sh #!/bin/bash # 安装基本依赖 yum install -y gcc gcc-c++ htop telnet ioto ...

  3. Python-Django-Ajax进阶3

    1 中间件 -是什么? 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不 ...

  4. beta冲刺2/7

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(2/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 做了点商家数据表格 接下来的计划 做 ...

  5. CTeX入门出坑

    终于出了入门坑.大致风格可以了.赶紧记下来. \documentclass{ctexbook} \usepackage{amsmath} \usepackage{amsfonts} \usepacka ...

  6. %E6%9D%8E%E9%9B%B7是什么编码

    在这个网站上可以进行解码http://tool.chinaz.com/Tools/URLEncode.aspx

  7. .net 枚举类型转换

    数字转化名称 Enum.GetName(typeof(枚举), 数字); 名称转化数字 (int)枚举

  8. LeetCode问题

    1.Two Sum """Given an array of integers, return indices of the two numbers such that ...

  9. 利用yarn capacity scheduler在EMR集群上实现大集群的多租户的集群资源隔离和quota限制

    转自:https://m.aliyun.com/yunqi/articles/79700 背景 使用过hadoop的人基本都会考虑集群里面资源的调度和优先级的问题,假设你现在所在的公司有一个大hado ...

  10. 【Vue】-- 数据双向绑定的原理 --Object.defineProperty()

    Object.defineProperty()方法被许多现代前端框架(如Vue.js,React.js)用于数据双向绑定的实现,当我们在框架Model层设置data时,框架将会通过Object.def ...