在C / C ++中打印所有的环境variables
如何获得C和/或C ++中所有环境variables的列表?
我知道getenv
可以用来读取一个环境variables,但是我如何列出它们呢?
环境variables作为envp
参数提供给main()
– 一个以空string结尾的数组:
int main(int argc, char **argv, char **envp) { for (char **env = envp; *env != 0; env++) { char *thisEnv = *env; printf("%s\n", thisEnv); } return 0; }
#include<stdio.h> extern char **environ; int main() { int i = 1; char *s = *environ; for (; s; i++) { printf("%s\n", s); s = *(environ+i); } return 0; }
我想你应该检查一下environ
。 使用“man environ”。
您的编译器可能会提供非标准扩展到提供额外环境variables信息的主函数。 MS编译器和大多数Unix版本都有这个版本的main:
int main (int argc, char **argv, char **envp)
其中第三个参数是环境variables信息 – 使用debugging器来查看格式是什么 – 可能是一个空终止的string指针列表。
int main(int argc, char **argv, char** env) { while (*env) printf("%s\n", *env++); return 0; }
int main(int argc, char* argv[], char* envp[]) { // loop through envp to get all environments as "NAME=val" until you hit NULL. }
在大多数环境中,你可以声明你的main:
main(int argc,char* argv[], char** envp)
envp包含所有的环境string。
LPTCH WINAPI GetEnvironmentStrings(void);
http://msdn.microsoft.com/en-us/library/ms683187%28VS.85%29.aspx
编辑:只适用于Windows。
如果你正在Windows操作系统上运行,那么你也可以调用GetEnvironmentStrings()
方法返回一个以空字符结尾的string。