我要做的是制作一个包含系统中所有环境变量的表。我的解决方案可在Windows中运行,并且可用于char环境变量(使用环境),但不适用于Mac。
这是我目前的解决方案:
template<>
char** GetEnviron(void)
{
return environ;
}
template<>
wchar_t** GetEnviron(void)
{
return _wenviron;
}
T* pEnvVarPair = *GetEnviron<T*>();
for (int idx = 1; pEnvVarPair; idx++)
{
...
pEnvVarPair = *(GetEnviron<T*>() + idx);
};
在stdlib.h中有以下声明:
#define _wenviron (*__p__wenviron()) // Pointer to wide environment table
在ifdef #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP下
Mac有类似的东西吗?
我缺少明显的东西吗?
答案 0 :(得分:2)
"production": {
"fileReplacements": [
{
"replace": "src/robots.txt",
"with": "src/robots.prod.txt"
}
],
的第三个参数是环境变量的数组。这将转储环境:
main
在我的Mac上编译:
#include <iostream>
int main(int argc, char **argv, char **env) {
for (int i=0; env[i]!= NULL; i++) {
std::cout << env[i] << std::endl;
}
return 0;
}
运行输出:
g++ -o env env.cpp
如果由于某种原因您不想在$ ./env
NDK=/Users/spartygw/android-ndk
SSH_AGENT_PID=18108
TERM_PROGRAM=Apple_Terminal
ANDROID_HOME=/Users/spartygw/Library/Android/sdk
TERM=xterm-256color
SHELL=/bin/bash
CLICOLOR=1
TMPDIR=/var/folders/97/hlbrfp294kdbf182909shsqw0000gn/T/
GRADLE_HOME=/Users/spartygw/bin/gradle
TERM_PROGRAM_VERSION=433
CVSROOT=gwarren@vpdsec.net:/home/cvs/virnetx
TERM_SESSION_ID=EC6955BE-1149-4A56-8C3E-3C86B315048E
USER=spartygw
NDKROOT=/Users/spartygw/android-ndk
SSH_AUTH_SOCK=/var/folders/97/hlbrfp294kdbf182909shsqw0000gn/T//sshg8KJIbhlLFRt/agent.18106
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
color_prompt=yes
PATH=/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/spartygw/bin/gradle/bin:/Users/spartygw/bin
PWD=/tmp
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/
LANG=en_US.UTF-8
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
HOME=/Users/spartygw
SHLVL=2
CVS_RSH=ssh
DISPLAY=/private/tmp/com.apple.launchd.ZKUZySdPF2/org.macosforge.xquartz:0
中捕获它,则可以通过全局变量main
访问它。示例:
environ