回答
的环境变量提供给main()
为envp
参数 - 字符串的空终止数组:
int main(int argc, char **argv, char **envp)
{
for (char **env = envp; *env != 0; env++)
{
char *thisEnv = *env;
printf("%s\n", thisEnv);
}
return 0;
}
这是否也适用于Windows? – andrewrk 2016-01-12 05:41:50
如果你在windows下工作,并且你有一个编译器,为什么不直接运行它并看看?让我们知道怎么回事。 – 2016-01-12 23:20:23
虽然广泛支持(我不知道任何不支持它的编译器),但不保证对main使用“envp”参数,只有“argc”和“argv”。 “envp”也使它对main()是本地的。更便携的解决方案是查看几乎每个编译器提供的“environ”extern(global),以及getenv()和setenv()函数(这些函数应该可以确保操作流程环境的完整性) 。许多实现还提供了putenv()函数,但是该函数可能无法确保环境的完整性。 (请参阅文档,注释空间不足。) – 2017-12-04 20:49:30
int main(int argc, char* argv[], char* envp[]) {
// loop through envp to get all environments as "NAME=val" until you hit NULL.
}
我想你应该检查environ
。使用“man environ”。
http://www.opengroup.org/onlinepubs/007908799/xsh/environ.html – ephemient 2010-01-18 16:21:33
您的编译器可能会为提供附加环境变量信息的主函数提供非标准扩展。在MS编译器和大多数UNIX形式是这个版本的主要:
int main (int argc, char **argv, char **envp)
,其中第三个参数是环境变量的信息 - 使用调试器,看看有什么格式是 - 可能是一个空值终止字符串指针的列表。
LPTCH WINAPI GetEnvironmentStrings(void);
http://msdn.microsoft.com/en-us/library/ms683187%28VS.85%29.aspx
编辑:仅适用于Windows。
如果你在Windows操作系统上运行,那么你也可以调用GetEnvironmentStrings()
,它返回一个由空字符结尾的字符串块。
在大多数环境中,你可以声明主要为:
main(int argc,char* argv[], char** envp)
envp包含所有环境字符串。
#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;
}
您的示例中存在一个错误。第一个环境变量被打印两次。 – 2014-06-10 11:55:08
你100%正确。我已将i的初始值从0更新为1. – user1602017 2014-07-03 16:03:48
此解决方案的优点是它不需要位于main()中。如果你把它放在一个庞大而复杂的程序的中间,它可以正常工作。谢谢!! – 2015-05-05 01:18:36
int main(int argc, char **argv, char** env) {
while (*env)
printf("%s\n", *env++);
return 0;
}
- 1. 打印所有环境变量列表
- 2. 在NASM中打印环境变量
- 3. 在Linux中打印环境变量
- 4. 如何打印TCL中的所有环境变量?
- 5. 在C中打印没有值的环境变量
- 6. 在类中打印所有变量? - Python
- 7. 打印所有变量?
- 8. 在netlogo中打印重复循环中变量的所有值
- 9. 如何在Perl/Plack中打印环境变量
- 10. 如何使用echo在execle()中打印环境变量?
- 11. 打印C类中的所有变量#
- 12. 有两个变量的打印循环
- 13. 打印所有变量从一个类
- 14. 在Eclipse中为所有JUnit测试设置环境变量
- 15. 如何在Eclipse中为所有测试设置环境变量?
- 16. 打印包含python颜色的环境变量
- 17. svnkit没有环境变量?
- 18. 如何让pip尊重“CC”环境变量
- 19. 环境变量
- 20. 环境变量
- 21. 环境变量
- 22. 环境变量
- 23. 环境变量
- 24. 环境变量
- 25. 打印所有std ::语言环境名称(Windows)
- 26. 环境变量,变量名
- 27. 在Ruby中,如何打印URL参数和服务器环境变量?
- 28. 打印所有全局变量/局部变量?
- 29. 如何在emacs中打印所有定义的变量?
- 30. 我想在Tensorflow中打印所有变量和占位符
怎么样使用系统(ENV)调用ENV? – Vijay 2010-01-18 11:22:48