我们可以像这样在C中获取环境变量:
extern char **environ;
int main(int argc, char *argv[])
{
int count = 0;
printf("\n");
while(environ[count] != NULL)
{
printf("[%s] :: ", environ[count]);
count++;
}
return 0;
}
但环境的定义在哪里?我在unistd.h中找不到。它是如何工作的?
答案 0 :(得分:6)
environ
被定义为Glibc源文件posix/environ.c
中的全局变量。
答案 1 :(得分:3)
您是否尝试将envp声明为main的参数?
int main (int argc, char *argv[], char *envp[])
http://www.gnu.org/software/libc/manual/html_node/Program-Arguments.html#Program-Arguments
答案 2 :(得分:1)
人:
此变量必须在用户程序中声明,但如果头文件来自libc4或libc5,则在头文件unistd.h中声明,如果它们来自glibc且定义了_GNU_SOURCE。