MAC OS是否有类似_wenviron的东西?

时间:2020-08-28 15:04:57

标签: c++ macos

我要做的是制作一个包含系统中所有环境变量的表。我的解决方案可在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有类似的东西吗?

我缺少明显的东西吗?

1 个答案:

答案 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
相关问题