C获取linux系统环境变量方法(Environment Variables)

2023-11-16

主要有三种方法,都很简单。


一个单纯c语言获取的方式

<span style="font-family:Microsoft YaHei;font-size:14px;">#include <stdio.h>
#include <stdlib.h>

int main(){
	char *pathvar = getenv("PATH"); 
	printf("pathvar is : %s\n",pathvar);
	return 0;
}
</span>

getenv() 是在stdlib中定义的,当然我们也可以在c++中,通过 #include<cstdlib> std:getenv()来使用它.若考虑可移植性,这两种方式都是可以优先使用的


 envp

#include <stdio.h>

int main(int argc,char **argv,char **envp){
	printf("the 1st envp is : %s\n",envp[0]);
	return 0;
}

注:这里需要注明的是,关于envp,如果考虑程序的可移植性的话,最好不要用envp用为main函数的第三个参数.

因为他是一种常见的unix系列系统的扩展. envp 是一个以null结尾的字符串数组,在MicrosoftC++中可以使用.如果你用的是wmain.可以你 wchar_t 代替char来标识它.

虽然是一种常见的扩展,但并不是所有的系统中都有这种扩展,所以在考虑程序的可移植性的时候最好不要使用他.

因为在 C99 Standard 中只有两种合法的Cmian函数定义

a) int main(void)

and

b) int main(int argc, char **argv) or equivalent

and it allows implementations to define other formats (which can allow a 3rd argument)

c) or in some other implementation-defined manner.

extern char **environ

#include <stdio.h>

extern char **environ;

int main(int argc,char **argv){
	printf("get envp by environ,the 2nd envp is : %s\n",++*environ);
	return 0;	
}<span style="color:#ff0000;">
</span>

这里同样需要说明的是,extern char **environ.在Posix中是在<unistd.h>中声明的.详细信息可以参看:http://www.unix.org/single_unix_specification/  它也是unixsm的,并且在windows中是没有定义的,所以但是在实践中,考虑最好还是使用getenv()函数来取得相关的环境变量.


参考文章:http://www.cnblogs.com/algorithmic/archive/2012/09/23/2698604.html






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C获取linux系统环境变量方法(Environment Variables) 的相关文章

  • 最新SQL注入漏洞原理及与MySQL相关的知识点

    点击星标 即时接收最新推文 本文选自 web安全攻防渗透测试实战指南 第2版 点击图片五折购书 SQL注入漏洞简介 SQL注入是指Web应用程序对用户输入数据的合法性没有判断 前端传入后端的参数是攻击者可控的 并且参数被带入数据库查询 攻击
  • 关于linux内核编译时出现错误 objtool: missing symbol table的解决方法

    在内核编译时出现了objtool missing symbol table的错误导致编译失败上网找了一圈之后找到下面的方法 新建一个文件thunkpatch patch填入 tools objtool elf c 7 1 file chan
  • 西门子S7-200 SMART编程软件下载

    概述 西门子S7 200 SMART是一款入门级且非常好用的PLC 相比较于欧姆龙 三菱等同级别PLC SMART的编程软件架构更合理且逻辑性强 且官方一直在持续更新 截止于2021年8月 官方最新版编程软件 STEP7 MicroWIN
  • C#读取文件时中文显示问号

    StreamReader reader new StreamReader test txt Encoding Default string str reader ReadToEnd Console WriteLine str reader
  • 音视频大牛雷霄骅

    https blog csdn net leixiaohua1020 https www zhihu com question 49211380 https www bilibili com video av9927626 share so
  • volatile 与处理器的嗅探技术

    在 java并发编程的艺术 这本书中 关于volatile的内存原理本质的描述如下 有volatile变量修饰共享变量在编译器编译后 后多出一个 lock 来 lock前缀指令相当于一个内存屏障 会强制将对缓存的修改操作写入主内存 该字符在
  • DAPM之二:audio paths与dapm kcontrol

    在用alsa amixer controls时 除了我们之前提到的snd soc add controls添加的kcontrols外 还有一些多出来的controls 其实多出来的那些都是属于dapm kcontrol 主要用于切换音频路径

随机推荐