getenv()的全局变量? [英] global variable for getenv()?

查看:107
本文介绍了getenv()的全局变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

哪个全局变量包含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 **environNULL终止的字符串数组,因此您应该尝试:

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()的全局变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆