我可以使用envp setenv()吗?

时间:2014-05-12 11:47:05

标签: c env setenv

我试图用setenv()创建一个新的environement变量。

但我告诫setenv()函数只有在我使用environement" extern char ** environ"

时才设置我的新环境变量

但我想使用main()的参数:" char ** envp"。

这里是我尝试在envp中设置的代码,但正如您将看到的那样,如果您运行该代码,它将无法在envp中设置。

但如果我使用const char ** environ就可以了。

有什么想法吗?

#include <stdlib.h>
#include <stdio.h>

int     main(int ac, char **av, char **envp)
{
  int   i;

  i = 0;
  setenv("NEW_ENV_VAR", "hello_world", 0);
  while (envp[i])
    printf("%s\n", envp[i++]);
  return (0);
}

1 个答案:

答案 0 :(得分:1)

setenv()被记录为不允许将可选的envp参数更改为main。

如果您需要遍历所有环境变量,请使用extern char **environ variable

另见this question