问题描述
哪个全局变量包含getenv()的所有环境变量?在哪个glibc文件中,此var中充满了env vars?
Which is the global variable which holds all the environmental variables for getenv() ? In what glibc file is this var filled with env vars ?
我认为它是** environ,但是当我在bash中设置env var时,它仅输出SSH_AGENT_PID env var.为什么设置SSH_AGENT_PID,为什么它是唯一设置的?
I believe it to be **environ but when I set an env var in bash it only ouputs the SSH_AGENT_PID env var. Why is SSH_AGENT_PID set and why is it the only one that is set ?
DOCUMENT_ROOT='/foopath/'; export DOCUMENT_ROOT
int main(void)
{
extern char **environ;
printf("%s\n", *environ); // outputs: SSH_AGENT_PID=2822
}
推荐答案
char **environ
是NULL
终止的字符串数组,因此您应该尝试:
char **environ
is NULL
-terminated array of strings, so you should try:
extern char **environ;
char **p;
for (p = environ; *p; p++) {
printf ("%s\n", *p);
}
换句话说,environ[0]
是指向第一个env变量的指针,environ[1]
是指向第二个env变量的指针.environ
数组中的最后一个元素是NULL
.
In other words, environ[0]
is pointer to first env variable, environ[1]
to second etc. Last element in environ
array is NULL
.
这篇关于getenv()的全局变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!