2

哪个是保存 getenv() 的所有环境变量的全局变量?这个 var 在哪个 glibc 文件中填充了 env vars ?

我相信它是 **environ 但是当我在 bash 中设置一个环境变量时,它只会输出 SSH_AGENT_PID 环境变量。为什么设置 SSH_AGENT_PID 以及为什么它是唯一设置的?


DOCUMENT_ROOT='/foopath/'; export DOCUMENT_ROOT

int main(void)
{
extern char **environ;
printf("%s\n", *environ); // outputs: SSH_AGENT_PID=2822
}

4

1 回答 1

6

char **environNULL- 终止的字符串数组,所以你应该尝试:

extern char **environ;
char **p;
for (p = environ; *p; p++) {
    printf ("%s\n", *p);
}

换句话说,environ[0]是指向第一个环境变量、第二个等的指针。数组中的environ[1]最后一个元素是.environNULL

于 2010-06-27T14:27:37.167 回答