我知道在使用 c++ 编程时,我可以使用getenv
.
我也知道,在 os x 终端中,我可以使用env
.
我有兴趣获得可用于我正在运行的 c++ 程序的环境变量的完整列表。是否有 ac/c++ 函数可以列出它们?换句话说,有没有办法env
从我的 c++ 代码中调用?
使用environ
全局变量。它是一个以 null 结尾的指针,指向格式为 的字符串数组name=value
。这是一个微型克隆env
:
#include <stdlib.h>
#include <stdio.h>
extern char **environ;
int main(int argc, char **argv) {
for(char **current = environ; *current; current++) {
puts(*current);
}
return EXIT_SUCCESS;
}
您可以使用不可移植的envp参数来main
:
int main(int argc,char* argv[], char** envp)
作为奖励,显然OSX
你有苹果,它可以为你提供其他操作系统提供的信息:
int main(int argc, char **argv, char **envp, char **apple)
但它是用来做什么的?好吧,Apple 可以使用 apple 向量将他们想要的任何“隐藏”参数传递给任何程序。他们也确实使用它。目前,apple[0] 包含在磁盘上找到执行二进制文件的路径。你说什么?apple[0] 与 argv[0] 有何不同?不同之处在于调用 execve(2) 时 argv[0] 可以设置为任意值。例如,shell 通常通过以 argv[0] 中的第一个字符为 - 的方式启动登录 shell,从而将登录 shell 与常规 shell 区分开来。
哎呀,我忘了它可以system
让你执行终端命令。
这个片段给了我我需要的东西:
std::cout << "List of environment variables: << std::endl;
system("env");