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系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效. 修改用户环境变量 用户环境变量通常被存储在下面的文件中: ...
随机推荐
- 走向DBA[MSSQL篇] 积跬步行千里
原文:走向DBA[MSSQL篇] 积跬步行千里 不知道大家对SQL系列的感不感兴趣 先在这里探个路 本文针对的读者为SQL菜鸟 欢迎大牛驳论或者补充 既然是探路篇 就先说下数据过滤中的偏门匹配 希望能 ...
- POJ 3979 分数减法【数学问题的探讨】
将a/b和c/d简化一下就可以了 分数加减法 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12588 Accepted ...
- 关于 pthread_cond_wait 和 pthread_cond_signal , signal 无效的问题
关于一个消费者模式,,,引起的问题.. 我在io线程里不断的把一个函数调用放到队列里 然后ruby线程就不断的从这个队列里取出函数之争并运行. 典型的 消费者模式. 我曾经以为是这样... 这是wor ...
- Json.Net6.0入门学习试水篇
原文:Json.Net6.0入门学习试水篇 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中 ...
- C#操作IIS完整解析
原文:C#操作IIS完整解析 最近在为公司实施做了一个工具,Silverlight部署早已是轻车熟路, 但对于非技术人员来说却很是头疼的一件事,当到现场实施碰到客户情况也各不相同, 急需一个类似系统备 ...
- 新秀发挥云17号:RHEL改变以太网地址克隆虚拟机后,
新秀发挥云17号:RHEL改变以太网地址克隆虚拟机后, (一)变化hostname # vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=your-v ...
- GitHub版本控制
版本控制-GitHub 前面几篇文章,我们介绍了Git的基本用法及Git服务器的搭建,本篇文章来学习一下如何使用GitHub.GitHub是开源的代码库以及版本控制库,是目前使用网络上使用最为广泛的服 ...
- 华为OJ: 公共字符串计算
有几个需要注意的地方,这个问题是不是大写和小写之间的区别.这样你就输入字符串大写或小写转换的计算前. 第二个,定要清晰.先将s1从[i]处開始与s2的[j]開始匹配,不相等则j++直到j等于s2.le ...
- hdu Word Amalgamation(map)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1113 找单词 #include <iostream> #include <strin ...
- bigdata_hiveserver2报错_thrift
问题一: php客户端,链接hiveserver2 ,报错 如下 1: server.TThreadPoolServer (TThreadPoolServer.java:run(215)) - Err ...