首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >extern char **environ的定义在哪里?

extern char **environ的定义在哪里?
EN

Stack Overflow用户
提问于 2012-05-18 16:32:12
回答 4查看 16.6K关注 0票数 18

我们可以在C中获得环境变量,如下所示:

代码语言:javascript
复制
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中找不到它。它是如何工作的呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-18 17:07:01

在Glibc源文件posix/environ.c中,environ被定义为一个全局变量。

票数 14
EN

Stack Overflow用户

发布于 2012-05-18 16:35:52

您是否尝试过将envp声明为main的参数?

代码语言:javascript
复制
int main (int argc, char *argv[], char *envp[])

http://www.gnu.org/software/libc/manual/html_node/Program-Arguments.html#Program-Arguments

票数 4
EN

Stack Overflow用户

发布于 2012-05-18 16:35:50

男人:

此变量必须在用户程序中声明,但在头文件unistd.h中声明,如果头文件来自libc4或libc5,并且它们来自glibc且定义了_GNU_SOURCE。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10649273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档