UC编程:环境变量的查询与修改
每个程序中都维护一个指向环境变量的指针char **environ;
子进程会从父进程继承环境变量。子进程环境变量的修改不一定会影响父进程
无关的多个进程之间修改环境变量不会互相影响
打印环境变量
[c]
#include <stdio.h>
extern char **environ;
int main()
{
while(*environ)
{
printf("%s\n",*environ++);
}
return 0;
}
[/c]
查询环境变量
多数时候,只是查看一个环境变量的值。可以使用 char * getenv(const char *name);函数
[c]
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *path=getenv("PATH");
printf("path=%s\n",path);
return 0;
}
[/c]
这个和shell中用echo $PATH打印出来的效果是一样的
设置环境变量
putenv
定义函数 int putenv(const char * string);
表头文件 #include
函数说明 putenv()用来改变或增加环境变量的内容。
参数 string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。
[c]
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *HELLO;
putenv("HELLO=hello");
HELLO=getenv("HELLO");
printf("HELLO=%s\n",HELLO);
return 0;
}
[/c]
修改环境变量
*修改PATH环境变量加上HOME目录,把修改后的环境变量打印出来。
[c]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *path=getenv("PATH");
char *home=getenv("HOME");
int n=strlen(path)+strlen(home);
char *str=malloc(n+2);
sprintf(str,"%s:%s",home,path);
printf("str=%s\n",str);
setenv("PATH",str,1);
path=getenv("PATH");
printf("new path=%s\n",path);
free(str);
return 0;
}
[/c]
setenv与putenv区别
函数定义:int putenv(const char * string);
putenv()用来改变或增加环境变量的内容。
参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。
返回值:执行成功则返回0,有错误发生则返回-1。
函数定义:int setenv(const char *name,const char * value,int overwrite);
setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
参数value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。
返回值:执行成功则返回0,有错误发生时返回-1。
UC编程:环境变量的查询与修改的更多相关文章
- UNIX环境高级编程——环境变量表读取/添加/修改/删除
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char* pVal ...
- Java基础总结--Java编程环境变量配置
1.jdk--bin--都是命令行程序(图形化是对命令行的封装)eg javac&java执行javac必须切换到其所在目录--太麻烦---想在任意目录下使用要执行一个命令--先在当前目录下找 ...
- 环境变量、block、修饰符:block对环境变量的引用和修改需要通过修饰符来限定
环境变量.block.修饰符:block对环境变量的引用和修改需要通过修饰符来限定. http://www.cnblogs.com/fengmin/p/5816580.html - (NSUInteg ...
- Linux编程 21 shell编程(环境变量,用户变量,命令替换)
一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...
- Shell编程-环境变量配置文件
1.source命令 修改配置文件后,必须注销重新登陆才能生效,使用source命令可以不用重新登陆 source 配置文件 . 配置文件 环境变量配置文件中主要是定义对系统操作环境生效的系统默认环 ...
- Shell编程——环境变量
在Shell程序启动时会自动定义一组变量,这组变量就是环境变量,系统中的所有命令都可以使用这些变量参数. 1.如果在父Shell定义环境变量,在子Shell中也能查看到. (1)父Shell与子She ...
- 详解Windows不重启使环境变量修改生效(经典)
在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效.有没有什么方法可让它即时生效呢?下面介绍一种方法: 以修改环境变量“PATH”为 ...
- command not found,系统很多命令都用不了 ,修改环境变量
bash: ***: command not found,系统很多命令都用不了,均提示没有此命令. 突然之间linux很多命令都用不了,均提示没有此命令. 这应该是系统环境变量出现了问题导致的. 解决 ...
- Ubuntu 12 修改环境变量
Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效. 修改用户环境变量 用户环境变量通常被存储在下面的文件中: ...
随机推荐
- 跟着辛星认识一下PHP的自己主动载入
作为一个框架,文件的载入机制是不能少的,那么我们应该怎么载入呢,这些PHP已经给我们想好了,所以我们仅仅须要依照规则办事就能够了,PHP中有两个函数能够完毕这个功能,第一个是__autoload,如今 ...
- http报错之return error code:401 unauthorized
http报错之return error code:401 unauthorized 依据HTTP返回码所表示的意思应该是未授权,没有输入账号和password,因此解决方法就直接在HTTP包里面 ...
- 彩色图像--色彩空间 YIQ 、YUV 、YCbCr 、YC1C2 和I1I2I3
学习DIP文章64天 转载请注明文章出处:http://blog.csdn.net/tonyshengtan .出于尊重文章作者的劳动,转载请标明出处.文章代码已托管,欢迎共同开发:https://g ...
- (大数据工程师学习路径)第二步 Vim编辑器----Vim快速入门
vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截 ...
- vimer
vimer 第1.0章.统一概念 不管学什么技术,我都深信概念是最重要的.是影响整个学习轨迹,决定能在这个技术领域高度. 当然如果你现在的目的不是在学习而在于解决问题(很多人不愿意承认,或者没发现 ...
- [ Talk is Cheap Show me the CODE ] : jQuery Mobile页面布
[ Talk is Cheap Show me the CODE ] : jQuery Mobile页面布局 当我们专注地研究人类生活的空虚,并考虑荣华富贵空幻无常时,或许我们正在阿谀逢迎自己懒惰的天 ...
- 开始学习java
.net 许久 看网络java猿飞计划,感觉成了少数类,学校为它,有多难不,有着vb,C,javascript和vs基金会,这并不是说一些语法和框架的熟悉做,搞两天,以一个开发环境,myeclipse ...
- 【iOS开展-94】xcode6如何使用GIT以及如何添加太老项目GIT特征?
(1)对于一个新项目:如何使用GIT?在新项目的过程,例如,您可以选择下面的复选框. (2)针对老项目,加入GIT功能. --在终端.cd到项目文件夹 --然后输入git init,初始化一个.git ...
- Java数据结构系列——简单排序:泡、选择、直接进入
package SimpleSort; public class SimpleSort { /** * 冒泡排序:每次循环过程中.小的排在后面的数会像水中的 * 气泡一样慢慢往上冒,所以命名为冒泡排序 ...
- Debug和Release的不同
1. 变量. 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值近似于随机(我想是直接从内存中分配的,没有 ...