глобальная переменная для getenv ()? - PullRequest
2 голосов
/ 27 июня 2010

Какая глобальная переменная содержит все переменные среды для getenv ()? В каком файле glibc этот var заполнен переменными env?

Я считаю, что это ** environment, но когда я устанавливаю переменную env в bash, она выводит только переменную SSH_AGENT_PID env. Почему установлен SSH_AGENT_PID и почему он единственный?

<code>
DOCUMENT_ROOT='/foopath/'; export DOCUMENT_ROOT
<code>
int main(void)
{
extern char **environ;
printf("%s\n", *environ); // outputs: SSH_AGENT_PID=2822
}

1 Ответ

6 голосов
/ 27 июня 2010

char **environ - это NULL -определенный массив строк, поэтому вы должны попробовать:

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

Другими словами, environ[0] - указатель на первую переменную env, environ[1] на вторую и т. Д.Последний элемент в массиве environ: NULL.

.
...